본문 바로가기
Problem Solving/BOJ

[BOJ][Python]15312번 풀이

by NoiB 2022. 5. 24.
반응형

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

 

15312번: 이름 궁합

영어 대문자 알파벳 26개의 획수는 순서대로 3, 2, 1, 2, 3, 3, 2, 3, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1 로 정한다. (출제자가 알파벳 대문자를 쓰는 방법이 기준이다)

www.acmicpc.net

t = [3, 2, 1, 2, 3, 3, 2, 3, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1]
a = ['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']
tt = []
ans = []
h = input()
s = input()

for i in range(len(h)):
    tt.append(t[a.index(h[i])])
    tt.append(t[a.index(s[i])])
while 1:
    ans=[]
    for i in range(len(tt)-1):
        ans.append((tt[i]+tt[i+1])%10)
    tt = ans
    if len(ans) == 2:
        break
print(str(ans[0])+str((ans[1])))

저는 그냥 알파벳 리스트를 만들었는데요. 생각해보니까 string 모듈에서 알파벳 리스트를 가져올 수 있습니다. 굳이 A~Z까지 직접 만들지 않아도 돼요. 그 외에는 전에 풀었던 것과 동일합니다.

 

문제 접근은 h와 s를 각각 한글자씩 획수를 빈 리스트에 넣고 두 개씩 더하면서 다른 빈 리스트에 저장하는 걸 반복하다가 원소가 2개가 되면 반복문을 멈추면 됩니다. 사실 문제에서 시키는대로 하면 되는 문제여서 굳이 풀이를 길게 작성하지 않으려 했는데 생각보다 해당 문제에서 어려움을 겪는 분들이 있으신 것 같아서 내용을 조금 추가해봅니다. 또한 마지막 출력문은 굳이 저렇게 하지 않고 join으로 해결해도 무방합니다.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]24416번 풀이  (0) 2022.05.25
[BOJ][Python]1388번 풀이  (0) 2022.05.24
[BOJ][Python]16173번 풀이  (0) 2022.05.23
[BOJ][Python]17202번 풀이  (0) 2022.05.23