https://programmers.co.kr/learn/courses/30/lessons/12911
문제 읽고 그대로 구현하면 되는 문제입니다. 2진수로 변환하는 매서드 만드는데 조금 헷갈리더라고요.
스택사용해서 만들면 조금 수월하게 만들 수 있는 것 같습니다! 다른 사람들 풀이도 조금 참고해봐야겠습니다.
문제 풀이 코드
class Solution {
public int solution(int n) {
int result = oneCheck(binaryNumber(n));
int cnt = n;
while(true){
cnt++;
if(result == oneCheck(binaryNumber(cnt)))
return cnt;
}
}
private int oneCheck(StringBuilder number) {
int num = 0;
for (int i = 0; i < number.length(); i++) {
if (number.charAt(i) == '1')
num++;
}
return num;
}
private StringBuilder binaryNumber(int start){
Stack<Integer> stack = new Stack();
while(start / 2 != 1){
stack.push(start%2);
start = start/2;
}
stack.push(start%2);
stack.push(1);
StringBuilder stringBuilder = new StringBuilder();
while(!stack.isEmpty()){
stringBuilder.append(stack.pop());
}
return stringBuilder;
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 - 튜플(2019 카카오 개발자 겨울 인턴십)` (0) | 2020.08.25 |
---|---|
프로그래머스 - N개의 최소공배수(유클리드 호제법 알아보기) (0) | 2020.08.21 |
프로그래머스 - 가장 큰 정사각형 찾기 (0) | 2020.08.19 |
[정렬 뿌시기] - 선택정렬(Selection Sort) (1) | 2020.08.19 |
프로그래머스 - 크레인 인형뽑기(2019 카카오 개발자 겨울 인턴십) (0) | 2020.08.18 |