Computer Engineering/알고리즘 테스트

프로그래머스 코딩테스트 문제: 다음 큰 숫자

말하는호구마 2020. 3. 12. 21:04

프로그래머스 level2의 문제이다.

 

https://programmers.co.kr/learn/courses/30/lessons/12911

 

 

 

 

10진수를 2진수로 바꾸는 메소드가 필요했다.

Integer.toBinaryString(n);을 사용하면 2진수로 쉽게 전환이 가능하다.

 

class Solution {
  public int solution(int n) {
      int answer = 0;
      int nnum=0;
      int bnum=0;
      int index=0;
      String nbinary=Integer.toBinaryString(n);
      for(int i=0;i<nbinary.length();i++){
          if(nbinary.charAt(i)=='1')
              nnum++;
      }
      while(true){
          index++;
          String bbinary=Integer.toBinaryString(index+n);
          for(int i=0;i<bbinary.length();i++){
              if(bbinary.charAt(i)=='1')
                  bnum++;
         }
          if(bnum==nnum){
              answer=index+n;
              break;
          }
          else
              bnum=0;
      }
      return answer;
  }
}

처음에 이 코드를 작성하면서 효율성 테스트를 통과할 수 있을까 의문이었다.

while안에 for가 돌며 찾고자 하는 숫자가 나올 때까지 계속 돌고 있어야하기 때문에 시간제한에 넘어갈 것 같았다.

하지만 효율성 통과했다!

 

처음에 마지막 else bnum=0; 이부분을 해주지 않아서 틀렸었다.

bnum을 while문안에 선언해준줄 알고...ㅜㅠㅜㅠㅜ

꼼꼼하게 풀자!