Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 21.10.27. 5622 - 다이얼 본문

Algorithm/BaekJoon

백준 21.10.27. 5622 - 다이얼

HappyFrog 2021. 10. 27. 20:15

dial = ("ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ")

number = input()
time = 0
for i in number:
    for j in dial:
        if i in j:
            time += dial.index(j) + 3

print(time)

번호마다 할당받은 알파벳이 불규칙하게 3개 또는 4개씩 할당받았기 때문에 리스트로 이를 만들어준다.

다음으로는 다이얼을 걸 때 걸리는 시간인데

  • 숫자 1을 걸 때 -> 숫자1까지 거는 시간 + 다이얼을 처음으로 돌리는 시간 = 2초이다.
    • 따라서 "숫자만큼의 시간 + 1" 의 시간이 걸린다.
    • => ex ) 9를 걸려면 9(다이얼을 돌리는 시간) + 1(처음으로 초기화시키는 시간) = 10이므로 10초가 걸린다.

따라서 리스트의 인덱스는 0부터 시작하므로 번호 하나당 [인덱스 + 2](다이얼을 거는 시간) + 1초(초기화시간)만큼의 시간이 필요하다.

 

  1. 다이얼 리스트와 전화번호를 입력받게 만든다.
  2. 총 걸릴 시간을 집계할 객체를 만든다.
  3. 반복문을 통해서 전화번호를 순회한다.
  4. 중첩반복문으로 순회를 할 때마다 일치하는 글자가 어느다이얼에 있는지 구한다.
    • 여기서 주의할 점은 다이얼의 알파벳은 1이 아닌 2부터 시작한다. 따라서 0인덱스의 요소 = 다이얼2 를 의미한다.
  5. 따라서 해당 다이얼 인덱스 + 2에 초기화할 시간이 필요하므로 +1을 더해준다.
    • => 이것은 index + 2 +1 이므로 index + 3이라는 식이 성립된다.
    • 따라서 time은 dial의 index + 3만큼 증가한다.
  6. 이것을 누적한 시간을 출력한다.