알고리즘 문제(SOL)

[백준/1032/파이썬] 명령 프롬프트

https://www.acmicpc.net/problem/1032

 

1032번: 명령 프롬프트

첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은

www.acmicpc.net

Problem

  • 시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다.

조건

  • 이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다.
  • 그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.
  • 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 알파벳 소문자와 '.' 로만 이루어져 있다.

SOL

파이썬에서 String은 immutable한 객체이다. 즉, 파이썬의 문자열은 할당이 되면, 수정이 불가능하다. 설령 그 하나하나의 컴포넌트라도 수정이 불가능하게 된다.

 

따라서, 문자열을 수정하고 싶을때는, 파이썬에서는 주로 list로 처리를 하고 -> 출력할 때, join으로 합쳐주는 흐름을 많이 이용하게 된다.

 

어떤 방식으로든, 구현이 가능하지만, 입력되는 단어들의 길이가 모두 같고 , 첫번째 입력이 결국 기준이 되므로,

첫번째 입력에서의 정보를 토대로,  쭉 구현을 해주는게 좋아보인다.

 

import sys
input= sys.stdin.readline

N=int(input().rstrip())
pre=list(input().rstrip())
p_len=len(pre)
for _ in range(N-1):
    words=input().rstrip()
    for i in range(p_len):
        if pre[i] != words[i]:
            pre[i]="?"

print(''.join(pre))