For Programmer

백준 5622번 파이썬 문제풀이(문자열:다이얼) 본문

코팅테스트/백준 문제 모음

백준 5622번 파이썬 문제풀이(문자열:다이얼)

유지광이 2021. 9. 8. 14:53
728x90

나의 코드

s = input()
temp = 0
for i in range(s.__len__()):
    if s[i] == "A" or s[i] == "B" or s[i] == "C":
        temp += 3
    elif s[i] == "D" or s[i] == "E" or s[i] == "F":
        temp += 4
    elif s[i] == "G" or s[i] == "H" or s[i] == "I":
        temp += 5
    elif s[i] == "J" or s[i] == "K" or s[i] == "L":
        temp += 6
    elif s[i] == "M" or s[i] == "N" or s[i] == "O":
        temp += 7
    elif s[i] == "P" or s[i] == "Q" or s[i] == "R" or s[i] == "S":
        temp += 8
    elif s[i] == "T" or s[i] == "U" or s[i] == "V":
        temp += 9
    elif s[i] == "W" or s[i] == "X" or s[i] == "Y" or s[i] == "Z":
        temp += 10

print(temp)

-> 모든 조건을 if elif로 주었는데 이는 좋은 코드는 아니다. 이코드를 어떻게 간결하게 풀 수있을까. 이는 각각의 문자열을 리스트에 담아 그 인덱스 값을 이용하는 것으로 해결할 수 있다.

 

개선코드

s = input()
dial = ["ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"]
temp = 0 #총 전화를 위해 걸리는 시간 0으로 설정

for i in range(s.__len__()): #입력한 문자열의 길이만큼
    for j in dial: #dial의 리슽에 있는 한 원소씩 뺀다
        if s[i] in j: #입력한 문자열의 각각의 문자가 다이얼에 포함이 되어있다면
            temp += dial.index(j)+3 #그다이얼의 인덱스 +3 만큼 시간을 더한다.

print(temp)

 

728x90
Comments