it 지식/백준 문제 중 자잘한 문법 정리

백준 - 파이썬 1032 명령프롬프트

곰종 2023. 1. 18. 21:59

문제 내용

문제 예시 

 

내가 푼 방법

 

입력받은 문장은 길이가 다 같다는 점에서 하나 하나의 인덱스만 다르기에 처음 리스트를 입력받고, 2번째 줄부터는 첫 번째 입력받은 리스트와 비교하면서 다른 인덱스가 있다면 그 자리를 "?" 로 수정하며 풀기로 하였다.

1
2
3
4
5
6
7
8
9
10
11
n = int(input())
first_list = list(input())
 
for i in range(n-1):
    cmd_list = list(input())
    for j in range(len(first_list)):
        if first_list[j] != cmd_list[j]:
            first_list[j] = "?"
            
print(''.join(first_list))
 
cs

풀이

 

first_list 를 선언하여 첫 번째 들어오는 리스트를 입력받는다.

아래 for문에서 반복횟수를 range(n-1)을 한 이유는 n개를 입력받지만 첫 번째 줄은 이미 입력받았기 때문에 n-1을 한다.

(그리고 여기서 for i in range(n-1)을 했는데 i는 _로 하는게 맞는 것 같다)

이중포문을 사용하여 if문을 사용하여 첫 번째 입력받은 문자열과 그 다음 받는 문자열을 검사한다. 이때 검사(!=)는 문자열의 길이만큼 반복하고, 만약 인덱스의 요소가 다를 경우 그 자리에 "?"로 바꿔준다.

 

중요! 여기서 그냥 print(first_list)를 하게되면

['h', 'e', 'l', 'l', 'o'] 이런식으로 리스트 그 자체가 출력이 되는데 

요소만 출력하기 위해 join으로 문자열 변환 후 묶어서 출력했다.

 

join 함수는 리스트에 특정 구분자를 추가해서 문자열로 반환해주는 함수이다.

여기서 특정 구분자란 '-'.join(array) 를 하게 되면

이런식으로 특정 구분자를 추가해서 문자열로 반환을 해준다. 

 

주요 문법 : for, if, .join