CODING TEST/Beakjoon

[백준 / 5622 / python] 다이얼

더라 2023. 10. 16. 02:37
728x90

문제

 

문제 보러가기

백준(5622) - 다이얼

 

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