import sys
from collections import deque
def findanswer(secret, word_list):
alpha_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z']
password = deque(alpha_list)
for i in range(26):
temp_answer = ""
for char in secret:
diff = ord(char) - ord('a')
changed_char = password[diff]
temp_answer += changed_char
for word in word_list:
if word in temp_answer:
return temp_answer
first_char = password.popleft()
password.append(first_char)
secret = list(input())
count = int(input())
word_list = [sys.stdin.readline().strip() for i in range(count)]
print(findanswer(secret, word_list))
알파벳 리스트를 생성한 뒤에
암호문의 알파벳 순서를 구한다.
그 뒤에 알파벳리스트를 해독문으로 바꾸기 위해서
deque을 이용해서 맨앞에 있는 알파벳을 떼서, 뒤에 넣는다.
현실적으로 코딩테스트에 들어갔을 때 생각할 수 있을만한 정도의 알고리즘으로 사용
import sys
from collections import deque
secret = list(input())
count = int(input())
word_list = [sys.stdin.readline().strip() for i in range(count)]
alpha_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z']
# aList = list(string.ascii_lowercase) 이렇게 표현가능
password = deque(alpha_list)
for i in range(26):
temp_answer = ""
for char in secret:
diff = ord(char) - ord('a')
changed_char = password[diff]
temp_answer += changed_char
for word in word_list:
if word in temp_answer:
print(temp_answer)
first_char = password.popleft()
password.append(first_char)
원래는 이렇게 짰는데, 히든케이스를 통과를 못한다...
예상하는 바로는 테스트케이스에 답이 2개 이상 있는걸로 추정되는데
확실하지는 않음..
요악
ord() -> 문자를 숫자로 변환한다.
chr() -> 숫자를 문자로 변환한다.
import string
aList = list(string.ascii_lowercase)
소문자 알파벳 리스트 생성하는법