문제) 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.
전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다.
숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고,
다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며,
한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다.
즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.
a = input()
n = 0
T = {3:['A','B','C'],4:['D','E','F'], 5:['G','H','I'], 6:['J','K','L'],7:['M','N','O'],
8:['P','Q','R','S'], 9:['T','U','V'], 10:['W','X','Y','Z']}
for i in a:
for j,k in T.items():
if i in k:
n += j
print(n)
이번 문제는 문제를 이해하는데 오래 걸리진 않았지만 코딩을 짜는데 머리가 좀 아팠다.
일단 a의 입력값을 넣고, for 문을 초기화하기 위해 n = 0으로 초기화해주었다.
그 후 T라는 배열을 선언하였다. T의 구조를 보면 3:['A', 'B', 'C']의 의미는 A, B, C를 입력하면 3이 나온다는 뜻이다.
그래서 이것을 A~Z까지 숫자를 입력하였고, for 문으로 a의 항목이 X에 대입하였고,
이 후 for 문을 한번 더 사용하여 T.items()의 각 항목에 j, k에 대하여 만약 i가 k안에 있으면 n을 j만큼 증감시킨다.
이해가 안되시거나 틀린 정보는 댓글로 알려주시면 감사하겠습니다!
'알고리즘 > 백준 - 파이썬' 카테고리의 다른 글
백준) 1316번 그룹 단어 체커 문제 (파이썬) (0) | 2022.06.07 |
---|---|
백준) 2941번 크로아티아 알파벳 문제 (파이썬) (0) | 2022.06.07 |
백준) 2908번 상수 문제 (파이썬) (0) | 2022.06.03 |
백준) 1152번 단어의 개수 (파이썬) (0) | 2022.06.03 |
백준) 1157번 단어 공부 (파이썬) (0) | 2022.06.03 |
댓글