For Programmer
백준 5622번 파이썬 문제풀이(문자열:다이얼) 본문
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
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 1316번 파이썬 문제풀이(문자열:그룹 단어 체커) (0) | 2021.09.08 |
---|---|
백준 2941번 파이썬 문제풀이(문자열:크로아티아 알파벳) (0) | 2021.09.08 |
백준 2908번 파이썬 문제풀이(문자열:상수) - 파이썬스럽게 문자열 처리 (0) | 2021.09.08 |
백준 1152번 파이썬 문제풀이(문자열 - 단어의 개수) (0) | 2021.09.07 |
백준 1157번 파이썬 문제풀이(문자열 - 단어공부) (0) | 2021.09.03 |
Comments