알고리즘/BOJ

[BOJ] 5622 - 다이얼

서노리 2022. 1. 9. 00:01
반응형

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

 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

www.acmicpc.net

data = input()
array = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
sum = 0
for i in data:
    for j in array:
        if i in j:
            sum += array.index(j) + 3
            break
print(sum)

이 문제의 전제 조건을 보면 하나의 문자를 처리하면 원래의 위치에서 다시 시작해야 하므로 모든 입력을 처리하는데 걸리는 시간은 문자열의 순서와는 상관없이 똑같다는 것을 알 수 있다. 따라서 그냥 각각 알파벳에 맞는 숫자를 처리하는 시간을 모두 더하면 정답이다.

 

처음에는 숫자마다 알파벳이 3개씩 있는 줄 알고 그냥 data를 확인하면서 sum += ord(i) - ord('A') // 3 + 3 을 해주면 될 줄 알았는데 S나 Z 같은 예외사항이 있었기에 방법을 바꾸었다. 

 

같은 시간이 걸리는 알파벳끼리 문자열로 묶어서 리스트에 저장한 후, data를 리스트와 비교하면서 시간을 더해주었다.

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 18352 - 특정 거리의 도시 찾기  (0) 2022.01.16
[BOJ] 4673 - 셀프 넘버  (0) 2022.01.14
[BOJ] 1157 - 단어 공부  (0) 2022.01.06
[BOJ] 1439 - 뒤집기  (0) 2022.01.04
[BOJ] 11047 - 동전 0  (0) 2021.12.31