백준 | 5622

justhaza.log·2024년 5월 9일

알고리즘: BOJ

목록 보기
59/125

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


숫자로 된 번호가 주어질 때,
그 번호를 다 누르기 위한 최소 시간을 구하는 문제이다.


하나의 번호를 누르면 다시 처음 위치로 돌아가기 때문에,
최소 시간은 번호를 실수 없이 누르는 단순한 상황이라고 볼 수 있다.

예를 들어, WA라는 번호를 누르기 위한 최소 시간은 다음과 같다.
[1] W를 누르기 위한 최소 시간: 10초
[2] A를 누르기 위한 최소 시간: 3초
[3] WA를 누르기 위한 최소 시간: 10 + 3 = 13초


알파벳이 26개만 있기도 하고,
특별한 규칙이 없는 문제의 알파벳-숫자 매칭을 고려해서..

각 알파벳을 누르기 위해 필요한 최소 시간을 각각 딕셔너리에 저장한 뒤,
입력으로 들어온 알파벳을 하나씩 확인하며 총 시간을 구했다.


코드(정답)는 다음과 같다.

import sys


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

word = sys.stdin.readline().rstrip()

ans = 0
for ch in word:
    ans += min_time[ch]

print(ans)
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글