다이얼 (Baekjoon 5622)

문제 설명

  • 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
  • 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 1초씩 더 걸린다. (2=3초, 3=4초, …)

문제 풀이

객체로 만들어보자!

  • DialSection
    • 다이얼 전화기의 각 다이얼 부분을 나타낸다.
    • 다이얼 숫자, 해당하는 문자, 걸리는 시간을 포함한다.
    • 해당하는 문자는 문제에 정의되어 있는 것으로 초기화할 때 할당해주었다.
    • 걸리는 시간은 숫자보다 +1만큼 시간이 걸린다. (시간 = 숫자 + 1)
      • 숫자 1일 때, 2초가 걸린다.
      • 숫자 2일 때, 숫자 1보다 1초가 더 걸린다. 즉, 3초가 걸린다.
  • DialPhone
    • 여러 DialSection을 가지는 전화기를 나타낸다.

주의했던 점

  • 현재까지 걸린 시간 currentTime을 매개변수로 넘겨 객체 안에서 더하게 함으로써 객체의 상태를 꺼내지 않게 한다.
  • 1, 0은 해당하는 문자가 없기 때문에 DialSection의 생성자는 2종류로 만들었다.
    • 숫자만 받는 생성자
    • 숫자와 문자열을 받는 생성자

코드

https://github.com/mindock/algorithm/blob/master/src/baekjoon/baekjoon_5622.java