반응형
https://www.acmicpc.net/problem/5622
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 |