leetcode 에서 문제를 풀다가 Integer.bitCount 라는 함수를 알게되었다. 이걸 진작에 알았더라면 여러 알고리즘 문제를 겁나 편하게 풀었을텐데 이진수에서 1의 개수를 세어주는 함수이다.
이러한 시계에서 불이 n개 켜졌을때 반환할 수 있는 시간들을 String List 로 반환하라는 문제이다.
근데 저 시계 좀 간지나는거 같다
Hour 는 0 ~ 11 까지 존재한다 (12까지 존재하는줄 알고 짯다가 테스트 케이스에서 걸림)
Minutes 는 0 ~ 59 까지 존재한다
각 정수를 h, m 을 binary 로 변경했을때 1의 개수의 합이 num 이 되는 모든 시간을 반환한다
class Solution {
public List<String> readBinaryWatch(int num) {
List<String> result = new ArrayList<>();
for (int h = 0; h <12; h ++) {
for (int m = 0; m < 60; ++ m) {
int count = Integer.bitCount(h) + Integer.bitCount(m);
if (count == num)
result.add(String.format("%d:%02d", h, m));
}
}
return result;
}
}
Java
복사
Integer.bitCount
정수를 매개변수로 넣었을때 그 정수의 1 의 개수를 반환한다
•
→ 4
•
→ 3
이런 간지나는 함수를 몰랐다니... 이제 알았으니 요긴하게 써먹어야겠다
함께 읽어보면 좋은 글