728x90
반응형
BaekJoon 백준 1032 명령 프롬프트 문제는 명령 프롬프트에서 원하는 파일을 찾으려면 "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지 구하는 문제이다. 난이도는 Bronze 1이다.
BaekJoon 1032 명령 프롬프트 문제 정보
출처
- https://www.acmicpc.net/problem/1032
난이도
- 브론즈 1 / Bronze 1
명령 프롬프트 문제 요약
- 명령 프롬프트에서 원하는 파일을 찾으려면 다음과 같이 하면 된다.
- dir *. exe라고 치면 확장자가 exe인 파일이 다 나온다.
- "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a? b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다.
- 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다.
- 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면?을 적게 써야 한다. 그 디렉터리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.
- 파일 이름의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일 이름은 알파벳과 "." 그리고 "?"로만 이루어져 있다.
- 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지 구하여 출력한다.
문제 풀이 과정
- 파일이 1개이면 파일 이름 그대로 패턴으로 출력한다.
- 2개 이상이면 1, 2번째 파일 이름을 한 글자씩 비교하여 같으면 해당 문자를, 다르면?를 패턴에 넣는다.
- 파일이 2개면 패턴을 출력한다.
- 3개 이상이면 파일 비교 횟수 변수를 선언하고, 모든 파일의 비교가 끝날 때까지 파일 이름과 패턴을 비교하여 갱신한다.
- 패턴을 출력한다.
코드 및 설명
def pattern_matching(ptn, file_name):
global cnt
cnt += 1 # 파일 비교 횟수
for i in range(file_len):
if ptn[i] != file_name[i]:
ptn[i] = '?'
# 모든 파일 비교했으면 종료
if cnt == N:
return ptn
else:
return pattern_matching(ptn, file[cnt])
N = int(input())
file = []
for _ in range(N):
file.append(input())
# 파일이 1개일 때 그대로 출력
if N == 1:
print(file[0])
# 파일이 2개 이상일 때
else:
file_len = len(file[0]) # 파일 이름의 길이
# 1, 2번 째 파일 비교하여 패턴을 구한다.
pattern = []
for i in range(file_len):
# 같으면 같은 문자 넣기
if file[0][i] == file[1][i]:
pattern.append(file[0][i])
# 같지 않으면 ? 넣기
else:
pattern.append('?')
# 파일이 3개 이상이면
if N > 2:
cnt = 2 # 파일 비교 횟수
print("".join(pattern_matching(pattern, file[2])))
# 파일이 2개면 패턴 출력
else:
print("".join(pattern))
BaekJoon 백준 1032 명령 프롬프트 문제를 파이썬 python으로 풀어보았고, 난이도는 Bronze 브론즈 1이다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BaekJoon] 백준 10798 세로읽기 (Python / 파이썬) (0) | 2021.08.17 |
---|---|
[BaekJoon] 백준 1259 팰린드롬 수 (Python / 파이썬) (0) | 2021.08.17 |
[BaekJoon] 백준 2167 2차원 배열의 합 (Python / 파이썬) (0) | 2021.08.16 |
[BaekJoon] 백준 2748 피보나치 수 2 (Python / 파이썬) (0) | 2021.08.16 |
[BaekJoon] 백준 2869 달팽이는 올라가고 싶다 (Python / 파이썬) (0) | 2021.08.15 |
댓글