728x90
문제
문제 보러가기
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
입출력
입력 | 다이얼(영문) |
출력 | 다이얼(숫자) |
풀이
하나의 숫자마다 3개의 영문을 가지고 있다.
한 번의 다이얼 입력마다 숫자+1초씩 걸린다. (입력후 재자리로 돌아가는 시간 포함, 만약 Z면 9+1 = 10)
전화를 거는데 걸리는 최소시간을 출력한다.
def find_number(x):
if 'A'<= x <='C':
return 2
elif x <='F':
return 3
elif x <='I':
return 4
elif x <='L':
return 5
elif x <= 'O':
return 6
elif x <= 'S':
return 7
elif x <= 'V':
return 8
elif x <= 'Z':
return 9
word=input()
hap=0
for i in word:
hap += (find_number(i)+1)
print(hap)
1) find_number()은 아스키코드를 통해 숫자를 확인하는 함수이다.
1.1) elif를 통해 입력 받은 문자가 다이얼 숫자 어디에 해당하는지 확인한다.
2) 입력 받은 단어를 for문을 통해 하나씩 꺼내 계산한다.
3) find_num()에서 나온 수에 1을 더한 값을 hap에 중첩한다.
4) 모든 단어의 계산이 끝난 후 나온 hap을 출력한다.
💭 처음에 다이얼의 영어와 숫자를 정리할 때 딕셔너리를 쓸지 배열을 쓸지 고민했다. 하지만 둘 다 깔끔하지 못할 것 같아 아스키코드를 활용하는 방식으로 했다. elif - if문이 길긴하지만 계산은 간편해서 괜찮은 것 같다.
728x90
'CODING TEST > Beakjoon' 카테고리의 다른 글
[백준 / python / 2563] 색종이 (0) | 2023.10.22 |
---|---|
[백준 / python / 2566] 최댓값 (0) | 2023.10.21 |
[백준 / 10809 / python] 알파벳 찾기 (0) | 2023.10.14 |
[백준 / 2675 / python] 문자열 반복 (2) | 2023.10.14 |
[백준 / 10811 / python] 바구니 뒤집기 (0) | 2023.09.23 |