[LeetCode] Binary Watch

아르당·2026년 1월 9일

LeetCode

목록 보기
83/94
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

이진 시계는 상단에 시간(0~11)을 나타내는 4개의 LED와 하단에 분(0~59)을 나타내는 6개의 LED가 있다. 각 LED는 0 또는 1을 나타내며, 최하위 비트는 오른쪽에 있다.

  • 예를 들어, 아래의 바이너리 시계는 "4:51"을 읽는다.

현재 켜져 있는 LED의 개수를 나타내는 정수 turnedOn이 주어졌을 때(PM 무시), 시계가 나타낼 수 있는 모든 가능한 시간을 반환한다. 순서는 상관없다.

시간은 앞에 0이 붙어서는 안된다.

  • 예를 들어, "01:00"은 유효하지 않다. "1:00"으로 입력해야 한다.

분은 두 자리 숫자로 구성되어야 하며, 앞에 0이 붙을 수 있다.

  • 예를 들어, "10:2"는 유효하지 않다. "10:02"으로 입력해야 한다.

Example

#1
Input: turnedOn = 1
Output: ["0:01", "0:02", "0:04", "0:08", "0:16", "0:32", "1:00", "2:00", "4:00", "8:00"]

#2
Input: turnedOn = 9
Output: []

Constraints

  • 0 <= turnedOn <= 10

Solved

class Solution {
    public List<String> readBinaryWatch(int turnedOn) {
        List<String> result = new ArrayList<>();

        for (int h = 0; h < 12; h++) {
            for (int m = 0; m < 60; m++) {
                if (Integer.bitCount(h) + Integer.bitCount(m) == turnedOn) {
                    String time = h + ":" + (m < 10 ? "0" + m : m);
                    result.add(time);
                }
            }
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글