[문제 설명]
https://programmers.co.kr/learn/courses/30/lessons/12911
[풀이 과정]
JAVA의 Integer 클래스에는 이진수 관련 메소드들을 제공한다.
1. Integer.toBinaryString( int );
- 10진수 -> 2진수로 변환하고 싶을 때 사용한다.
public class Test12 {
public static void main(String[] args) {
int n = 78;
String binary = Integer.toBinaryString(n);
System.out.println(binary);
}
}
// 1001110
2. Integer.bitCount( int );
- 10진수 숫자를 2진수로 변환했을 때 1bit의 개수를 반환한다.
public static void main(String[] args) {
int n = 78;
String binary = Integer.toBinaryString(n);
System.out.println(binary);
int one_count = Integer.bitCount(n);
System.out.println(one_count);
}
// 1001110
4
위 메소드들의 존재를 몰랐을 때는 10진수 -> 2진수 변환 메소드와 1비트 개수를 세는 로직도 직접 구현했다.
그렇게 하니 정확도 검사는 모두 맞았지만 효율성 검사를 통과하지 못했다.
위 메소드를 사용하니 효율성 검사도 모두 통과.
[JAVA 코드]
package com.algorithm.level2;
public class Test16 {
public static void main(String[] args) {
int n = 78;
System.out.println(solution(n));
}
public static int solution(int n) {
// 숫자 n을 이진수로 변환했을 때 1의 개수
int one_count = Integer.bitCount(n);
int answer_count = 0;
while (one_count != answer_count) {
// n보다 큰 숫자들을 하나씩 순회
n++;
answer_count = Integer.bitCount(n);
}
return n;
}
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Level2] 압축 - JAVA (0) | 2020.11.20 |
---|---|
[프로그래머스][Level2][JAVA] 영어 끝말잇기 (0) | 2020.11.07 |
[프로그래머스][Level2][JAVA] 수식 최대화 (0) | 2020.10.24 |
[프로그래머스] [Level2] [JAVA] 행렬의 곱셈 (0) | 2020.10.18 |
[Level2] 피보나치 수 (0) | 2020.10.12 |