Today
Total
03-12 16:25
관리 메뉴

홍우진의 개발 일기장

[백준] 17269번: 이름궁합 테스트 / 파이썬 본문

알고리즘/백준

[백준] 17269번: 이름궁합 테스트 / 파이썬

홍우진 2025. 2. 19. 23:50
728x90
반응형

문제 링크


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

풀이 코드


al = {'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}
n, m = map(int,input().split())
a, b = input().split()
new = []

for i in range(min(n,m)):   #['L', 'M', 'E', 'I', 'E', 'Y', 'S', 'A', 'I', 'W', 'Y', 'A', 'U', 'K', 'N', 'I']
    new += a[i] + b[i] 

if n > m:   #뒤에 열 추가
    new += a[min(n,m):]
else:
    new += b[min(n,m):]

su = []
for i in new:   #수로 변경
    su.append(al[i])

while len(su) > 2:
    cnt = len(su)
    for i in range(cnt-1):
        if su[i]+su[i+1] >= 10: #수가 10을 넘을경우 일의자리만
            su.append(int(str(su[i]+su[i+1])[1]))
        else:
            su.append(su[i]+su[i+1])
    su = su[cnt:]   #이전 수들 삭제

print(str(int(str(su[0])+str(su[1])))+'%')

코드 해석


미리 알파벳에 숫자가 매핑된 딕셔너리를 만들어서 사용하였다.

먼저 이름이 남기 전 글자까지 번갈아서 넣어 준 뒤,

뒤에 나머지를 넣어준다.

그 후 숫자로 바꿔준다.

그리고 배열의 수들을 더해서 뒤에 추가해준 뒤

앞부분을 삭제한다.

배열의 수가 두 자리 수가 되면 끝.

 

 

체감 난이도: ★★☆☆

복잡했다.

 
728x90
반응형
Comments