반응형
https://leetcode.com/problems/binary-watch/description/
전수조사 문제였습니다.
📕 풀이방법
📔 풀이과정
2진수 단위로 bit가 켜지고 꺼지기 때문에 쉽게 검사 가능합니다.
1. 2차원 for loop를 수행합니다. 0 - 11 시 와 0 - 59 분 까지의 범위를 검사하며 시간과 분의 bit를 세줍니다.
num >> 1하면서 num & 1 했을 때 1이라면 num에 해당하는 bit가 켜져 있으므로 세주는 방식으로 세줄 수 있습니다.
2. 시간 h의 bit와 시간 m의 bit를 더한 값이 turnedOn 이라면 경우에 해당하므로 형식에 맞춰 string으로 변환하는 함수 getTimeString을 구현해 수행 후 반환한 결과를 ans에 push_back해줍니다.
📕 Code
📔 C++
class Solution {
public:
int countBit(int num){
int count = 0;
while(num > 0) {
if((num & 1) == 1) count++;
num = num >> 1;
}
return count;
}
string getTimeString(int h, int m) {
string t = to_string(h) + ":";
if(m < 10) t += "0";
t += to_string(m);
return t;
}
vector<string> readBinaryWatch(int turnedOn) {
vector <string> ans;
for(int h = 0; h <= 11; h++) {
for(int m = 0; m <= 59; m++) {
if(countBit(h) + countBit(m) == turnedOn) {
ans.push_back(getTimeString(h, m));
}
}
}
return ans;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Brute Force' 카테고리의 다른 글
(C++) - LeetCode (easy) 463. Island Perimeter (0) | 2023.03.24 |
---|---|
(C++) - LeetCode (easy) 1539. Kth Missing Positive Number (0) | 2023.03.06 |
(C++) - LeetCode (easy) 389. Find the Difference (0) | 2023.03.02 |
(C++) - LeetCode (easy) 389. Find the Difference (0) | 2023.02.28 |
(C++) - LeetCode (easy) 350. Intersection of Two Arrays II (0) | 2023.02.22 |