본문 바로가기
코딩테스트/백준 알고리즘 풀이

[백준 알고리즘/python] 백준 5622번 다이얼, 파이썬

by Godgil 2020. 3. 19.

백준 알고리즘 5622번 다이얼, 파이썬

 

이번 문제는 백준 알고리즘의 5622번 다이얼 문제이다. 역시나 파이썬이다.

 

 

처음에 봤을땐 솔직히 뭔 문제지 싶으면서 머리가 띵 했다.

하지만 점차 이해가 되면서 어떻게 풀어야 할 지 감이 왔다.

 

그러니까 이 문제는, 전화를 걸고 싶은 곳이 있으면 다이얼을 돌려서 전화를 걸어야 하는데,

 

할머니는 전화번호를 각 숫자에 해당하는 알파벳을 통해 외운다.

 

알파벳이 주어 졌을때, 이 알파벳이 의미하는 전화번호를 걸 때 걸리는 시간을 구하라는 문제이다.

 

 

문제의 조건이다.

# 조건 1. 숫자 1을 걸려면 2초가 걸리고, 한 칸 옆에 있는 2를 걸려면 1초가 더 소요된다.

# 조건 2. 전화를 걸 때, 알파벳을 외워서 전화를 건다.

# 조건 3. ABC = 2, DEF = 3, GHI = 4, JKL = 5, MNO = 6, PQRS = 7 TUV = 8 WXYZ = 9

 

문제에 대한 내 생각이다.

# 생각 1. 조건 3의 형태로 딕셔너리 자료형을 만들면 될 것 같다.

# 생각 2. 찾으면 반복문을 통해 그 문자가 해당이 되면 숫자로 변환한다.

# 생각 3. 결국 1은 2초 2는 3초 3은 4초이다. 그러니까 숫자로 변환 한 후, 문자 길이만큼 더해주면 소요되는 시간을 구할 수 있다.

 

 

dial = {'A': '2','B': '2','C' : '2', 'D' :'3','E' :'3','F' : '3', 'G':'4','H':'4','I' : '4', 'J': '5','K': '5','L': '5', 'M': '6','N': '6','O' : '6', 'P' : '7','Q' : '7','R' : '7','S' : '7','T': '8','U': '8','V' : '8', 'W' : '9','X' : '9','Y' : '9','Z' : '9'}

string = input()
num = str()
for i in string:
    num = num + dial[i]
result = 0
for i in num:
    result = result + int(i)
result = result + len(num)
print(result)

 

나는 A부터 Z까지 전부 하나씩 딕셔너리에 집어 넣었다. 이게 좀 귀찮긴 했는데,

결과적으로 문제 풀기는 쉬우니까 이걸 선택했다. 다른 사람 코드도 한번 살펴봐야겠다.

 

문제 출처

https://www.acmicpc.net/problem/5622

 

5622번: 다이얼

문제 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

www.acmicpc.net

 

댓글