백준 문제 풀이 - 명령 프롬프트 1032번

Joonyeol Sim👨‍🎓·2022년 1월 6일
0

백준문제풀이

목록 보기
56/128

📜 문제 이해하기

시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다.
dir *.exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다.
이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다. 그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.

💡 문제 재정의

각 문자열들을 서로 비교한 뒤 하나라도 다른 문자가 있다면 ?으로 바꾸자.

✏️ 계획 수립

문자열의 길이가 전부 같기 때문에 첫 번째 문자열을 기준으로 삼고 나머지 문자열중에서 다른 문자가 있다면 해당 부분만 ?으로 바꿔주면 된다.

💻 계획 수행

import sys

if __name__ == '__main__':
    N = int(input())
    text_list = []
    result = ""
    flag = False

    for _ in range(N):
        text_list.append(sys.stdin.readline().rstrip())

    for i, ch in enumerate(text_list[0]):
        for text in text_list[1:]:
            if ch != text[i]:
                flag = True
                break
        if flag:
            result += '?'
            flag = False
        else:
            result += ch

    print(result)

🤔 회고

별다른 문자열 알고리즘을 사용하지 않아도 쉽게 해결할 수 있는 문제였다.

profile
https://github.com/joonyeolsim

0개의 댓글