문제
문제에서 주어진 자연수 n에서 1씩 더해가며, 이진수로 변환한 후에 1의 개수가 동일한 지에 대해 탐색했습니다. 만약 동일한 경우가 있으면 반복문을 종료하고 정답 처리를 진행했습니다.
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
// 이진수로 변환
String target = Integer.toBinaryString(n);
// 이진수에서의 1의 개수 카운트
int cnt = 0;
for (int i=0; i<target.length(); i++) {
if (target.charAt(i) == '1') {
cnt++;
}
}
int rst = n+1;
while (true) {
String brst = Integer.toBinaryString(rst);
int bcnt = 0;
for (int i=0; i<brst.length(); i++) {
if (brst.charAt(i) == '1') {
bcnt++;
}
}
// 1의 개수가 동일하다면 정답 처리
if (cnt == bcnt && rst > n) {
answer = rst;
break;
}
rst++;
}
return answer;
}
}
✏️ Tip
Integer.toBinaryString
를 활용한다면 손쉽게 이진수로 변환 가능피드백 및 개선점은 댓글을 통해 알려주세요😊