관리 메뉴

100세까지 코딩

[백준] 5622번 다이얼 (파이썬) + 딕셔너리 자료형 본문

코딩테스트/파이썬

[백준] 5622번 다이얼 (파이썬) + 딕셔너리 자료형

100세까지 코딩 2024. 1. 9. 18:36
문제

나의 생각
  • 처음에는 (ord와 // 3)으로 아스키코드를 사용하여 계산하려 했다.
  • 그러나, 7번 9번에 알파벳이 4개씩 들어있어서 불가능.
  • 두 번째로, list를 생성해 알파벳에 맞게 초기화한다.
  • list를 순회할 때마다 +1씩 해주며 list에 해당 알파벳이 들어있으면 종료.
나의 풀이
s = input()
alphabet_list = ['', '', 'ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
total = 0
for index in range(len(s)):
    for alphabet in alphabet_list:
        total += 1
        if s[index] in alphabet:
            break
print(total)
새롭게 알게 된 풀이 (딕셔너리)
s = input()
alphabet_list = {'ABC': 3, 'DEF': 4, 'GHI': 5, 'JKL': 6, 'MNO': 7, 'PQRS': 8, 'TUV': 9, 'WXYZ': 10}
total = 0
for index in range(len(s)):
    for key in alphabet_list:
        if s[index] in key:
            total += alphabet_list[key]
print(total)
참고

  1. 딕셔너리 자료형 : 키 - 값으로 이루어진 자료형, 키는 고유한 1개만 가능

  2. 딕셔너리 선언 방법 : { }   or dict()

  3. 딕셔너리의 키 = 수정 불가능한 데이터 타입만 (int, strings, tuples, float, bool)

  4. 딕셔너리 사용법:

  • len(dict) : 딕셔너리에 포함된 키-값 총 개수 반환
  • dict.items() : 딕셔너리에 있는 모든 키-값 반환
  • dict.keys() : 모든 키 반환
  • dict.values() : 모든 값 반환
  • dict[key] : 특정 키에 대한 값 반환, 존재하지 않는 키면 KeyErrror
  • dict.get(key) : 특정 키에 대한 값 반환, 존재하지 않는 키면 None 반환
  • x in dict : 딕셔너리에 x라는 키가 있으면 True 없으면 False
  • dict.update(키-값, 키-값) : 두 개 이상의 키-값을 동시에 수정