https://programmers.co.kr/learn/courses/30/lessons/12911
코딩테스트 연습 - 다음 큰 숫자
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니
programmers.co.kr
문제 읽고 그대로 구현하면 되는 문제입니다. 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 |