Leetcode Java Binary Watch
업데이트:
문제
코드
class Solution {
public List<String> readBinaryWatch(int turnedOn) {
List<String> times = new ArrayList<String>();
for (int hour = 0; hour < 12; hour++) {
for (int minute = 0; minute < 60; minute++) {
int bits = Integer.bitCount(hour) + Integer.bitCount(minute);
if (bits == turnedOn) {
times.add(this.getTime(hour, minute));
}
}
}
return times;
}
private String getTime(int hour, int minute) {
return new StringBuilder().append(hour).append(":").append(minute / 10).append(minute % 10).toString();
}
}
결과
설명
- 1부터 10까지 임의의 숫자인 turnedOn이 주어지면, 바이너리 워치에서 표현 가능한 시간을 반환하는 문제이다.
- 바이너리 워치는 상단에 시간을 나타내는 4개(8, 4, 2, 1)의 숫자와 하단에 분을 나타내는 6개(32, 16, 8, 4, 2 , 1)의 숫자가 존재한다.
- 시간은 앞 자리에 0을 넣지 않고, 분은 앞 자리에 0을 넣어 시간 표현식을 만들어 준다.
- 예를 들어, “01:00”와 “10:2”는 유효하지 않고, “1:00”와 “10:02”는 유효하다.
-
결과를 넣을 times를 ArrayList로 초기화 한다.
- 0부터 11까지 hour를 증가시키며 반복한다.
- 0부터 59까지 minute를 증가시키며 반복을 수행한다.
- hour와 minute의 이진 표현에 있는 비트 수의 합이 turnedOn과 동일한 경우, hour와 minute를 주어진 시간 표현식에 맞춰 변환하여 times에 넣어준다.
- 0부터 59까지 minute를 증가시키며 반복을 수행한다.
- 반복이 완료되면 표현 가능한 시간을 저장한 times를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기