😎풀이

  1. 이론상 켜져있는 LED가 8개 이상이라면 어떠한 시간도 구성할 수 없음 (11시, 59분 등 무조건 초과)
  2. 0시 부터 11시까지 가능한 모든 시간 순회
  3. 0분 부터 59분까지 가능한 모든 분 순회
  4. 시간과 분을 2진수로 변경하여 1의 수를 세면 그 값이 켜진 LED의 수가 됨
    4-1. 원리는 예를 들어 8시(1000) 30분(11110) 총 5개의 LED가 켜져야 함
    4-2. 시간과 분을 합쳐 보면 100011110이 되며 split 할 경우 ["", "000", "", "", "", "0"] 6의 길이를 갖으므로 -1을 한 값이 1의 수가 됨
  5. 시간 입력
  6. 입력된 시간 반환
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;
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글