[문제]
시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다.
dir *.exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다.
이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다. 그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.
https://www.acmicpc.net/problem/1032
1032번: 명령 프롬프트
첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은
www.acmicpc.net
🎨 풀이
💡 전체 코드
import sys
n = int(input())
file = []
answer = ''
for _ in range(n):
file.append(sys.stdin.readline())
for i in range(len(file[0])):
status = True
for j in range(0,n-1):
if file[j+1][i] != file[j][i]:
status = False
break
if status == True:
answer += file[0][i]
else :
answer += '?'
print(answer)
> 핵심 : 글자가 일치하는 지 순서대로 비교하면 된다
🍦 코드 설명 (실행 순서대로 나열)
# main
n = int(input())
file = []
answer = ''
1. n을 입력받는다.
- n : 파일 이름 개수
- file : 파일 이름이 들어갈 리스트
- answer : 정답 (for문 결과에 따라 한글자씩 추가될 예정)
for _ in range(n):
file.append(sys.stdin.readline())
2. for문을 n번 반복하며 file에 이름을 하나씩 입력받아 넣는다.
for i in range(len(file[0])):
status = True
for j in range(0,n-1):
if file[j+1][i] != file[j][i]:
status = False
break
if status == True:
answer += file[0][i]
else :
answer += '?'
3. for문을 이용해서 같은 위치의 글자끼리 비교한다.
- len(file[0])이 범위인 for문은 한글자씩 보기 위해 적어둔 것이기 때문에 상위 for문으로 뒀다.
4. 만약, file[j+1][i]와 file[j][i]가 같지 않다면 status를 False로 바꾼 후 for문을 종료한다.
5. status가 True라면 answer에 file[0][i]를 추가하고, 아니라면 answer에 ?를 추가한다.
- file[0][i]를 넣는 이유는 예제 5번 같은 경우 때문이다.
- 예제 5번은 파일이름이 하나라서 두번째 for문은 통과하지 않고 들어온다.
- 그렇기 때문에 file[j][i] 이렇게 썼다가는 j를 모르는 상태라서 오류가 난다. 그래서 안전하게 file[0][i]를 넣어주는 것이다.
print(answer)
6. answer을 출력한다.

끝~
⭐ 느낀점
> 재밌다재밌서~ 질문게시판에 올라와서 반례 찾아주려고 풀었지만.. 그새 다른 답변이 달려버렸더라. ^ㅁ^; 그냥 문제 푼 사람 되어버렸다. 그래도 잘 풀었다 잘했다~
'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 2902번 - KMP는 왜 KMP일까? (파이썬) (0) | 2022.09.06 |
---|---|
[백준] 2455번 - 지능형 기차 (파이썬) (0) | 2022.09.05 |
[백준] 2490번 - 윷놀이 (파이썬) (0) | 2022.09.03 |
[백준] 2442번 - 별 찍기 5 (파이썬) (0) | 2022.09.02 |
[백준] 10773번 - 제로 (파이썬) (0) | 2022.09.01 |