반응형
사이트명 : 프로그래머스(Programmers)
문제명 : 다음 큰 숫자
언어 : 자바(Java)
다음 큰 숫자의 포인트는 숫자를 2진수로 바꾼 뒤에
n보다 크면서 2진수로 변환했을 때 1의 갯수는 동일한 값을 찾아야 한다는 것이다
그리고 n보다 크면서도 다음으로 큰 수를 찾아야 한다
내 풀이방법은 아래와 같은데
먼저 n을 2진수로 변환해서 1의 갯수를 세는데
2진수 변환은 Integer.toBinaryString(값) 으로 가능하고
1의 갯수는 toBinaryString을 사용해서 String 타입으로 바뀐 값을
한글자씩 자른 뒤 .equals("1")로 세주면 된다
이후 n에서 수를 계속 높여가면서 1의 갯수를 계속 세보는데
n과 1의 갯수가 동일하다면 바로 break 시키고 값을 반환한다
마지막으로 프로그래머스에 바로 적용 가능한 코드는 아래와 같다
class Solution {
public int solution(int n) {
int answer = 0;
int CompareLength = 0;
int nLength = 0;
String CompareBinary = "";
String nBinary = Integer.toBinaryString(n);
nLength = nBinary.length() - nBinary.replace("1", "").length();
for(int i = n+1; i>n; i++) {
CompareBinary = Integer.toBinaryString(i);
CompareLength = CompareBinary.length() - CompareBinary.replace("1", "").length();
if(nLength == CompareLength) {
answer = Integer.parseInt(CompareBinary, 2);
break;
}
}
return answer;
}
}
반응형
'Language > 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 행렬의 덧셈(Java) (0) | 2019.09.24 |
---|---|
프로그래머스 점프와 순간 이동(Java) (0) | 2019.09.23 |
프로그래머스 JadenCase 문자열 만들기(Java) (0) | 2019.09.19 |
프로그래머스 최댓값과 최솟값(Java) (0) | 2019.09.19 |
프로그래머스 영어 끝말잇기(Java) (0) | 2019.09.18 |
댓글