[Baekjoon/Python] 백준 온라인 저지 5622번 : 다이얼
https://www.acmicpc.net/problem/5622
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
문제 ::
전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.
입력 ::
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
출력 ::
첫째 줄에 다이얼을 걸기 위해서 필요한 최소 시간을 출력한다.
예제 입력 ::
UNUCIC
예제 출력 ::
36
정답 코드 ::
alpha = input()
dial = ["ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"]
result = 0
for i in range(len(alpha)):
for j in dial:
if alpha[i] in j:
result += dial.index(j) + 3
print(result)
- 알파벳 대문자로 이루어진 단어를 입력받는다.
- 다이얼의 숫자에 적혀있는 문자를 묶어서 리스트를 만든다.
- 결과값을 받을 result를 0으로 초기화 해둔다.
- for문으로 입력한 값의 길이만큼 반복문을 돌린다
이중 for문을 이용하여 dial에 있는 문자열 하나하나를 j로 반복한다. - 만약 입력한 단어 문자열 단어에 alpha 값이 해당한다면
result 변수에 dial의 index값에 3을 더해준다. - 왜 3을 더해줄까?
dial 리스트에서 "ABC"의 index값은 0부터 시작한다. 하지만 실제 다이얼 사진을 보면
"ABC"는 숫자 2에 들어있다. 금속 핀이 있는 곳까지 돌리려면 3칸을 가야하기 때문에 +3을 더해준 것이다.
'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon/Python] 백준 1316 : 그룹 단어 체커 (0) | 2021.03.21 |
---|---|
[Baekjoon/Python] 백준 2941 : 크로아티아 알파벳 (0) | 2021.03.18 |
[Baekjoon/Python] 백준 2908 : 상수 (0) | 2021.03.17 |
[Baekjoon/Python] 백준 1152 : 단어의 개수 (0) | 2021.03.17 |
[Baekjoon/Python] 백준 1157 : 단어 공부 (0) | 2021.03.17 |