다이얼 (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