#53. 백준 5622번 문제 풀이: 다이얼 문제 원본 보기
다이얼 전화를 건다. 1 을 거는데 시계방향으로 1초 돌아오는데 1초, 즉 2초가 걸린다. 2, 3.. 0 번 번호는 멀수록 1초씩 더 걸린다. 각 숫자에는 알파벳이 할당되어 있는데, 알파벳으로 번호를 외워서 전화를 걸수도 있습니다. 1: 알파벳 없음 2: ABC 3: DEF 4: GHI 5: JKL 6: MNO 7: PQRS 8: TUV 9: WXYZ 0: 없음 알파벳 단어가 UNUCIC 라면 868242 가 된다. 단어가 주어졌을 때 전화를 거는 최소시간을 구하는 프로그램을 작성하라.
입력/출력
--입력--
WA
--출력--
13
--입력--
UNUCIC
--출력--
36
문제풀이+해설
알파벳에 해당하는 숫자는 배열에 알파벳 순서에 따른 번호를 넣어두고 찾는다.
ns = "22233344455566677778889999";
    //ABCDE..
문자는 아스키코드값이며 ABC 순서대로 위치하므로 B의 경우 'A'-'A'는 0, 'B'-'A' 를 빼면 1, ..이 된다.
이 원리로 문자에 해당하는 배열값을 뽑아낼 수 있다.

각 번호별 걸리는 시간은 아래와 같다.
1 을 거는데 걸리는 시간은 2초
2 를 거는데 걸리는 시간은 2초 +1초 = 3초
3 은 4초, 4는 5초
즉 n번호를 거는데 걸리는 시간은 n+1초가 된다.
code sol.
ns = "22233344455566677778889999";
     #ABC 에 해당하는 순서로 있다고 가정하고 전화번호를 세팅.
wd = input()
# 전화번호 알파벳단어를 입력받는다
sec = 0 # 걸린 시간, 초기값 0
for c in wd: # 문자열에서 한글자씩 c로 가져옴
  cn = ord(c) - ord('A') # 문자를 인덱스 숫자로 변경해 준다.
  n = int(ns[cn])
  sec += n + 1 # 걸리는 시간( 번호+1초)를 더해줌
print(sec) # 걸린 시간을 출력
© 코드솔 - CodeSol. All Rights Reserved.