백준_5622_다이얼

준비해용·2023년 5월 3일

백준

목록 보기
10/16

🗨️ Comment

  • 처음엔 알파벳 하나씩 딕셔너리의 key로 만들려고 했음
    dic['A'] = dic['B'] = dic['C'] = 1
     dic['D'] = dic['E'] = dic['F'] = 2
    → 다 만들어서 문제를 풀어도 될 것 같긴 했지만, 문제의 의도와 조금 안맞는거 같은 느낌이 들었음
  • 좀더 효율적인 방법 하나의 다이얼숫자에 문자가 여러개 묶여있으니까, 딕셔너리에서도 묶자 → 검사할때는 keys()를 통해 문자열안에 포함되는지 확인하자

⏰ 시간복잡도

  • 문자열의 길이가 최대 15 → O(len(문자열))
  • 매 문자마다 dic의 keys를 순회 → 8개 각 key를 이루는 문자열 최대길이 → 4
    ⇒ O( 문자열길이 x 8 x 4)
    ⇒ 시간안에 O

🥳 정답코드

# 1초 / 128MB
'''
23.05.03 @MilanoBeer
15:50 ~ 16:02 
'''

# 주어지는 문자열 -> 숫자로 변환 / 2이상, 15이하 
code = list(input().strip())

# Solution 
# 각 알파벳마다 맞는 숫자 대응해두기
dic = dict()

dic['ABC'] = 2
dic['DEF'] = 3
dic['GHI'] = 4
dic['JKL'] = 5
dic['MNO'] = 6
dic['PQRS'] =7
dic['TUV'] = 8
dic['WXYZ'] = 9

# code하나씩 읽어서 시간계산하기 
tot_time = 0
for c in code:
    for k in dic.keys():
        if c in k:
            tot_time += dic[k] + 1 # 해당 다이얼값 + 가는 데 추가 시간
# 시간 구하기 
print(tot_time)

0개의 댓글