Koala - 9기/기초 알고리즘 스터디

[백준/python] 2596번 : 비밀편지

shlinn 2023. 1. 25. 23:55

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

 

2596번: 비밀편지

병현이는 지은이에게 문자 A, B, C, D, E, F, G, H 로 쓰여진 편지를 날마다 보내는데, 컴퓨터로 보내는 비밀편지로, 한 문자마다 0 또는 1인 숫자 여섯 개를 사용하여 보낸다. 둘 사이의 약속은 다음과

www.acmicpc.net

 

문제 코드

 

문제 풀이

 

먼저 X = {} 에 A ~ H 인 키 값 와 그 밸류값을 정의. 키 값과 밸류값은 따로 key = [] , val = [] 로 리스트화 시킴.

첫 for 문에서 6자리 숫자가 반복될 때 마다 c += 1 을 해줌으로써 현재 몇 번째 반복인지 알 수 있게 함.

 

1) 입력받은 6자리 숫자가 val = [] 의 값 중 하나와 완전히 일치한 경우, 그에 맞는 키 값을 ans = [] 에 추가.

      다시 for 문 반복.

 

2) ~ 완전히 일치하지 않은 경우, 한 자리만 틀렸는지 확인.

2-1) A ~ H 의 밸류값과 비교하여 한 자리만 틀린 경우가 한 개라도 존재 할 때,

입력된 숫자모음과 비교해서 한자리만 틀렸던 숫자모음의 키 값을 ans 에 추가하고 첫 번째 for 문으로 돌아감.

2-2) 한 자리만 틀린 경우가 없을 때, 전체 for 문을 break 함.

 

3-1) ans 의 길이가 T와 일치하는 경우 = 모든 ans 값을 받은 경우, ans의 값을 join 을 통해 띄어쓰기 없이 출력함.

3-2) ans 길이가 T와 일치하지 않는 경우 =  ans 값 추가 없이 break 된 경우, 모르는 문자가 나온 처음 위치 = c 를 출력함.