티스토리 뷰

문제출처 - https://www.acmicpc.net/problem/5622

 

5622번: 다이얼

문제 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

www.acmicpc.net

내 풀이

string = list(input())

for i in range(len(string)):
    if string[i] == 'A' or string[i] == 'B' or string[i] == 'C':
        string[i] = 2
    elif string[i] == 'D' or string[i] == 'E' or string[i] == 'F':
        string[i] = 3
    elif string[i] == 'G' or string[i] == 'H' or string[i] == 'I':
        string[i] = 4
    elif string[i] == 'J' or string[i] == 'K' or string[i] == 'L':
        string[i] = 5
    elif string[i] == 'M' or string[i] == 'N' or string[i] == 'O':
        string[i] = 6
    elif string[i] == 'P' or string[i] == 'Q' or string[i] == 'R' or string[i] == 'S':
        string[i] = 7
    elif string[i] == 'T' or string[i] == 'U' or string[i] == 'V':
        string[i] = 8
    else:
        string[i] = 9

print(sum(string) + len(string))

나는 너무 더럽게 풀었는데

 

다른 풀이

dial = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
a = input()
ret = 0
for j in range(len(a)):
    for i in dial:
        if a[j] in i:
            ret += dial.index(i)+3
print(ret)

 

파이썬의 in 연산자를 활용하면 훨씬 간단하게 풀 수 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함