
😎풀이
- 이론상 켜져있는 LED가 8개 이상이라면 어떠한 시간도 구성할 수 없음 (11시, 59분 등 무조건 초과)
- 0시 부터 11시까지 가능한 모든 시간 순회
- 0분 부터 59분까지 가능한 모든 분 순회
- 시간과 분을 2진수로 변경하여 1의 수를 세면 그 값이 켜진 LED의 수가 됨
4-1. 원리는 예를 들어 8시(1000
) 30분(11110
) 총 5개의 LED가 켜져야 함
4-2. 시간과 분을 합쳐 보면 100011110
이 되며 split 할 경우 ["", "000", "", "", "", "0"]
6의 길이를 갖으므로 -1을 한 값이 1의 수가 됨
- 시간 입력
- 입력된 시간 반환
function readBinaryWatch(turnedOn: number): string[] {
if (turnedOn > 8) return [];
const result: string[] = [];
for (let hour = 0; hour < 12; hour++) {
for (let minute = 0; minute < 60; minute++) {
if ((hour.toString(2) + minute.toString(2)).split('1').length - 1 === turnedOn) {
result.push(`${hour}:${minute.toString().padStart(2, '0')}`);
}
}
}
return result;
}