[TIL - 1] 백준 1032, 명령 프롬프트 문제 (문자열)

전유진·2025년 3월 31일

명령 프롬프트 문제

문자열 문제

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와 문자열 전환

  • list(str) : string to list
  • str = ''.join(list) : list to string

str.replace(바꿀문자, 새문자, 바꾸는횟수)

pattern.replace('?', '*', 1)을 통해 ?를 *로 한번씩만 바꾸게 해줬다.

profile
배움을 좋아하는 사람입니다. 이곳에 배움의 기록을 남기려고 합니다.

0개의 댓글