https://school.programmers.co.kr/learn/courses/30/lessons/12911
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.*;
class Solution {
//이진수 변환 후 1의 개수 counting
public int count1(int num){
int cnt = 0;
while(num > 1){
if(num % 2 == 1){
cnt++;
num = num / 2;
}
else{
num = num / 2;
}
}
return cnt + num;
}
public int solution(int n) {
int answer = n + 1; //다음 큰 숫자는 n보다 큰 자연수
int nCount = count1(n); //n을 이진수로 변환했을 때 1의 개수
while(true){
int answerCount = count1(answer);
if(answerCount == nCount){
break;
}
else{
answer++;
}
}
return answer;
}
}
이진수 변환 후 1 개수 세는 걸 어떻게 처리해야 하나 고민을 했는데, 간단히 생각하면 쉬운 문제였다.
창의력이 부족한가보다 .. ㅜ
그저 n+1 부터 차근히 이진수 변환 과정에서 1의 개수를 세고, 같은 경우에 return 해주면 되는 것이었다.
쉽게 쉽게 생각해보자구 !
'알고리즘' 카테고리의 다른 글
[프로그래머스] PGS - 야근 지수 (0) | 2025.03.20 |
---|---|
[백준] BOJ2178 - 미로탐색 (JAVA) (0) | 2024.10.31 |
[PGS] 프로그래머스 - 여행경로 (JAVA) (0) | 2024.04.18 |
[프로그래머스] PGS - 게임 맵 최단거리 (0) | 2023.04.22 |
[백준] BOJ20920 - 영단어 암기는 괴로워 (JAVA) (0) | 2023.04.19 |