[백준] 1032번. 명령 프롬프트 (Python)

윤라이트·2023년 11월 4일

백준 코딩테스트

목록 보기
14/25

하이 !

오늘은 브론즈 1 문제이다.





[백준] 1032번. 명령 프롬프트

문제 풀이

  • 파일 이름을 리스트로 받고 첫번째 행의 열들과 n번째 행의 열들을 비교해서 동일한 값이면 다른 리스트에 그 값을 저장하고 다르면 '?'를 저장하도록 만들었다.


[정답 코드] 1032번. 명령 프롬프트 (Python)

N = int(input())  # 파일 이름의 개수

dirname = []      # 파일 이름을 리스트로 저장장
same = []         # 비교 후 동일한 값을 저장할 리스트

for _ in range(N) :     # 파일 이름 입력 받기기
    dirname.append(input())

Csize = len(dirname[0])    # 파일 이름 개수 계산산

for i in range(Csize) :
    first = dirname[0][i]  # 비교할 문자 저장장

    for j in range(1, N) : # 비교하여 같은 문자 저장장
        if dirname[j][i] == first :
            continue
        else :            # 같지 않으면 '?' 저장
            first = '?'
            break
    same.append(first) 

print(''.join(same))      # 리스트 문자열로 출력.

[수정 전 실패 코드]

N = int(input())  # 파일 이름의 개수

dirname = []  # 파일 이름 리스트로
same = []
count = 1

for _ in range(N):
    dirname.append(input())

Rsize = len(dirname)
Csize = len(dirname[0])

for _ in range(N):
    same.append(['?'] * Csize)  # 2차원 리스트로 초기화

for i in range(Csize):
    for j in range(Rsize - 1):
        if dirname[0][i] == dirname[j + 1][i]:
            count += 1
    if count == Rsize:
        same[0][i] = dirname[0][i]

for row in same:
    print(''.join(row))

원래는 수정 전 실패 코드와 같이 작성을 하였는데 애초에 입력 받은 파일 이름과 동일한 크기로 전부 '?'로 채우고 count를 이용해 값을 비교 후 동일한 값을 대체하기로 했었다.

그런데 에러가 발생하여 수정을 계속한 끝에 정답이 나왔다.

same.append(['?'] * Csize) 이 코드와 같이 2차원 리스트로 초기화를 할 때 이런 방법을 쓸 수 있는 것을 잊어 버리고 for문을 사용해서 수작업으로 했었다.ㅋㅋㅋㅋㅋㅋ 나도 참^^

무튼 끝 - !

profile
끝까지 가보자9~!!!🔥✨💡

0개의 댓글