https://www.acmicpc.net/problem/17269
len_a, len_b = map(int, input().split(' '))
a, b = map(str, input().split(' '))
alp = {'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}
i = 0
names = ""
for x, y in zip(a, b):
i += 1
names += x
names += y
if len_a > len_b:
names = names+a[i:]
else:
names = names+b[i:]
every_list = [alp[x] for x in names]
while True:
length = len(every_list)
every_list = [int(str(every_list[i]+every_list[i+1])[-1])
for i in range(len(every_list)-1)]
if length == 3:
break
print(str(int(''.join(list(map(str, every_list))))) + '%')
1. 알파벳의 각 획을 {알파벳: 획} 형식의 dict로 만들어줍니다.
2. names에 a와 b 이름을 번갈아가면서 붙여준 후, every_list에 맨 처음 알파벳 획 값으로 설정을 해줍니다.
(예: names: 'LMEIEYSAIWYAUKNISAKURA' 일 경우 각 알파벳 획인
[1, 3, 4, 1, 4, 2, 1, 3, 1, 1, 2, 3, 1, 3, 2, 1, 1, 3, 3, 1, 2, 3]으로 설정)
3. while문을 돌린 후, every_list를 계속 업데이트 해줍니다.
- i와 i+1을 더해주고 1의 자리 수만 가져옵니다. length가 3이 되면 그대로 멈춥니다.
4. every_list를 모두 합한 후, %를 붙여주고 출력합니다.
(만약 01 이 될 경우 1로 바꿔줘야되기 때문에, str 값을 int로 바꿔준 뒤 다시 str 값으로 변경해줍니다).
alp dict를 만들 때 아래와 같이 string의 ascii_uppercase를 사용하여도 가능합니다.
import string
stroke = [3, 2, 1, 2, 4, 3, 1, 3, 1, 1, 3, 1, 3, 2, 1,
2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1]
alp = dict(zip(list(string.ascii_uppercase), stroke))
'Algorithm' 카테고리의 다른 글
[파이썬] 백준 2839번: 설탕 배달 (0) | 2024.01.03 |
---|---|
[파이썬] 백준 9037번: The candy war (0) | 2023.12.16 |
[파이썬] 백준 1072번: 게임 (0) | 2023.12.12 |
[파이썬] 백준 1157번: 단어 공부 (0) | 2023.11.26 |
[파이썬] 백준 1436번: 영화감독 숌 (0) | 2023.11.21 |