728x90
반응형
문제 링크
programmers.co.kr/learn/courses/30/lessons/12911
* 프로그래머스 - Level 2 - (자바) 다음 큰 숫자
- Integer.toBinaryString(n) 함수 이용하기 / 규칙 찾기
< 로직 >
* Integer에 이진 변환이 되는 함수가 있는지 몰라서 꾸역꾸역 스택으로 만들었었다
* 그리고 혹시나 하는 마음에 찾아보니.. Integer.toBinaryString(n);라는 함수를 알게 되었다!
* 경우가 별로 없어서 모든 경우를 다 따져서 코드를 짜려고 했는데
* 짜다 보니 그냥 단순 1의 개수 파악만 하면 되는 것을 깨달았다
* 현재 들어온 n 숫자의 1의 개수를 센다.
* n보다 큰 수들 중에 n과 1의 개수가 같은 수가 나올 때까지 반복
class Solution {
public int solution(int n) {
// 10진수 이진변환해서 스트링으로 넘겨줌
String b_num = Integer.toBinaryString(n);
int onecnt = 0;
// 현재 n의 1의 개수를 카운트
for(char binary : b_num.toCharArray()) {
if(binary == '1') {
onecnt++;
}
}
int answer = 0;
// n보다 큰 수 중 1의 수가 같은 수를 찾는다
for(int next = n+1; next <= 10000000; next++) {
int next_one_cnt = 0;
String next_binary = Integer.toBinaryString(next);
for(char binary : next_binary.toCharArray()) {
if(binary == '1') {
next_one_cnt++;
}
}
if(onecnt == next_one_cnt) {
answer = next;
break;
}
}
return answer;
}
}
반응형
'문제풀이 > Programmers 문제풀이' 카테고리의 다른 글
[ 알고리즘 ] 코딩 - Programmers - 단어변환.java (0) | 2021.03.16 |
---|---|
[ 알고리즘 ] 코딩 - Programmers - 땅따먹기.java (0) | 2021.02.22 |
[ 알고리즘 ] 코딩 - Programmers - 캐시.java (0) | 2021.01.27 |
[ 알고리즘 ] 코딩 - Programmers - 뉴스클러스터링.java (0) | 2021.01.27 |
[ 알고리즘 ] 코딩 - Programmers - JadenCase.java (0) | 2021.01.26 |