프로그래머스 level2의 문제이다.
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문안에 선언해준줄 알고...ㅜㅠㅜㅠㅜ
꼼꼼하게 풀자!
'Computer Engineering > 알고리즘 테스트' 카테고리의 다른 글
프로그래머스 코딩테스트 문제: 다리를 지나는 트럭 (0) | 2020.03.14 |
---|---|
프로그래머스 코딩테스트 문제: 가장 큰 수 (0) | 2020.03.13 |
프로그래머스 코딩테스트 문제: 올바른 괄호 (0) | 2020.03.12 |
프로그래머스 코딩테스트 문제: 쇠 막대기 (0) | 2020.03.11 |
프로그래머스 코딩테스트 문제: 문자열 내 마음대로 정렬하기 (0) | 2020.03.10 |