문자열 문제
import sys
input = sys.stdin.readline
def solution(N):
words = []
for i in range(N):
tmp = input().strip()
words.append(tmp)
pattern = list(words[0])
l = len(pattern)
for word in words:
for i in range(l):
if word[i] != pattern[i]:
pattern[i] = '?'
pattern = ''.join(pattern)
if pattern[0] == '?':
pattern.replace('?', '*', 1)
for i in range(1,l):
if pattern[i] != '?':
break
pattern.replace('?', '*', 1)
print(pattern)
N = int(input().strip())
solution(N)
알고리즘 설명
1. N번의 words를 입력받은 뒤,
2. 첫번째 input 문자열을 복사해서 pattern에 저장함.
3. 이후 word를 하나하나 방문하며 pattern과 패턴을 비교함.
같지 않은 경우는 ?로 바꿔줌.
4. '?' 갯수를 최소화해야하므로 '?'로 시작하는 경우는 '?'가 끝나는 지점까지 싸그리 지워주고 *로 바꿔줌.
list(str) : string to liststr = ''.join(list) : list to stringpattern.replace('?', '*', 1)을 통해 ?를 *로 한번씩만 바꾸게 해줬다.