본문 바로가기
Language/알고리즘 문제풀이

프로그래머스 다음 큰 숫자(Java)

by wakestand 2019. 9. 23.
반응형

사이트명 : 프로그래머스(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;
	}
}
반응형

댓글