https://www.acmicpc.net/problem/5622
문제 풀이
- 숫자 1이 2초가 걸리기 때문에 숫자 2는 3초가 걸린다.
- 숫자 2부터 문자가 시작이고 문자를 배열에 담을거니깐 index는 0이다.
- 결론은 숫자 2는 index가 0이고 3초가 걸리고 'ABC' 를 의미하므로
- 딕셔너리를 만들러 key로는 문자를 넣고 value값으로 초를 넣어 계산한다.
- index+3을 해주어 초를 계산해준다.
- 입력값 문자를 받아 딕셔너리의 key값에 들어있으면 value값인 초를 누적합하여 최종 걸린 시간을 출력해준다.
solution
import sys
alphabet = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ']
dial_dict = {alphabet[i] : i+3 for i in range(len(alphabet))}
# {'ABC': 3, 'DEF': 4, 'GHI': 5, 'JKL': 6, 'MNO': 7, 'PQRS': 8, 'TUV': 9, 'WXYZ': 10}
word = sys.stdin.readline().strip() # 'ADE'
# 설명/ 예시 첫번째 순회
result = 0
for a in dial_dict: # 딕셔너리의 반복은 key가 순회함 / a = 'ABC'
for w in word: # w = 'A'
if w in a: # 'A'가 'ABC'에 있으므로
result += int(dial_dict[a]) # 'ABC'의 value값인 3을 result에 더해줌
print(result)
다른 풀이
import sys
alphabet = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ']
word = sys.stdin.readline().strip() # WA
result = 0
for i in range(len(word)): # word의 길이만큼 순회함 i = 0 / 1
for j in alphabet: # alphabet의 리스트를 순회함
if word[i] in j: # word[0] = W가 alphabet 요소안에 있다면,
result += alphabet.index(j)+3 # 그 요소의 인덱스 번호에 3초를 더해줌
print(result)
- 굳이 숫자가 의미하는 문자와 초를 딕셔너리로 만들 필요가 없다고 느꼈습니다. for문 안에 돌릴때 index에서 바로 +3을 해줘도 됩니다.
- 하지만 그래도 딕셔너리에 넣고자 한 것은 문자가 의미하는 초를 의미해 조금 더 가독성 있게 짜고 싶었기 때문입니다.
'algorithm > 백준' 카테고리의 다른 글
[PYTHON] 1712 손익분기점 ZeroDivisionError (0) | 2023.01.26 |
---|---|
[PYTHON] 10822 더하기 (0) | 2023.01.19 |
[PYTHON] 2577 숫자의 개수 - 한줄씩출력(for, print(str,sep='\n')) (0) | 2023.01.19 |
[PYTHON] 2576 홀수 (0) | 2023.01.19 |
[PYTHON] 7785 회사에 있는 사람 - 딕셔너리 value값으로 key 추출 (0) | 2023.01.19 |
댓글