티스토리 뷰

www.acmicpc.net/problem/17269

 

17269번: 이름궁합 테스트

시윤이는 좋아하는 이성이 생기면 가장 먼저 이름궁합부터 본다. 이름궁합을 보는 방법은 간단하다. 먼저 이름을 알파벳 대문자로 적는다. 각 알파벳 대문자에는 다음과 같이 알파벳을 적는데

www.acmicpc.net

import sys
sys.stdin=open("input.txt", "r")

lenA, lenB = map(int, input().split())
A, B = map(str, input().split())
times = {
    'A' : 3, 'B' : 2, 'C' : 1, 'D' : 2, 'E' : 4, 'F' : 3, 'G' : 1, 'H' : 3, 'I' : 1, 
    'J' : 1, 'K' : 3, 'L' : 1, 'M' : 3, 'N' : 2, 'O' : 1, 'P' : 2, 'Q' : 2, 'R' : 2, 
    'S' : 1, 'T' : 2, 'U' : 1, 'V' : 1, 'W' : 1, 'X' : 2, 'Y' : 2, 'Z' : 1
}

nameList = []
numList = []
if lenA < lenB: # 더 긴 이름을 뒤에 붙인다.
    for lA, lB in zip(A, B[0:lenA+1]):
        nameList += [lA, lB]
        numList += [times[lA], times[lB]] # 알파벳의 획수 또한 리스트에 추가한다.
    nameList += B[lenA:]
    for L in B[lenA:]: #
        numList.append(times[L])
else:
    for lA, lB in zip(A[0:lenB+1], B):
        nameList += [lA, lB]
        numList += [times[lA], times[lB]]
    nameList += A[lenB:]
    for L in A[lenB:]:
        numList.append(times[L])

flag = False
res = numList

while True:
    # 궁합 확률은 보통 두 자리 수지만, 세자리 (100)이거나 한자리 sum(res) == 0 인 경우도 고려한다.
    # 01%는 len(res) == 2에서 발견된다.
    if len(res) == 2 or res == [1, 0, 0] or sum(res)==0:
        break
    res = []
    for i in range(len(numList)-1):
        res.append((numList[i] + numList[i+1]) % 10)
    numList = res

ans =''  
for r in res:
    ans += str(r)
ans = int(ans) # 01 -> 00으로 표기한다.
print('{}%'.format(ans))

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함