백준 알고리즘 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
'코딩테스트 > 백준 알고리즘 풀이' 카테고리의 다른 글
[백준 알고리즘/python] 백준 1316번 그룹 단어 체커, 파이썬 (0) | 2020.03.20 |
---|---|
[백준 알고리즘/python] 백준 2941번 크로아티아 알파벳, 파이썬 (0) | 2020.03.19 |
[백준 알고리즘/python] 백준 2908번 상수, 파이썬 (0) | 2020.03.19 |
[백준 알고리즘/python] 백준 1152번 단어의 개수, 파이썬 (0) | 2020.03.19 |
[백준 알고리즘/python] 백준 1157번 단어 공부, 파이썬 (0) | 2020.03.19 |
댓글