반응형
6. 숫자의 표현

문제

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i=1; i<=n; i++){
            int sum = 0;
            
            for(int j=i; j<=n; j++){
                sum += j;
                
                if(sum == n){
                    answer++;
                    break;
                } else if(sum > n){
                    break;
                }
            }
        }
        
        return answer;
    }
}

<작성한 코드>

두 개의 for문을 사용했다. 첫 번째 for문에서는 i는 1부터 n까지 범위를 지정해 주고 합을 저장할 변수 sum을 만들어줬다. 두 번째 for문에서는 j부터 n까지 sum에 더해가며 n과 같을 때까지 더한다. 만약 n과 일치하게 되면 answer에 1을 더하고 반복문을 종료한다. 만약 sum이 더 커져버린다면 더하지 않고 반복문을 종료시켰다. 그 뒤 answer을 반환했다.

 

 

 

7. 다음 큰 숫자

문제

class Solution {
    public int solution(int n) {
        int answer = 0;
        int nCnt = 0;
        
        String strN = Integer.toBinaryString(n);
        for(int i=0; i<strN.length(); i++){
            if(strN.charAt(i) == '1') nCnt++;
        }
        
        for(int i=n+1; i<=1000000; i++){
            int iCnt = 0;
            
            String strI = Integer.toBinaryString(i);
            for(int j=0; j<strI.length(); j++){
                if(strI.charAt(j) == '1') iCnt++;
            }
            
            if(nCnt == iCnt){
                answer = i;
                break;
            }
        }
        
        return answer;
    }
}

<작성한 코드>

정답으로 제출할 변수 answer과 정수 n을 이진수로 변환했을 때 1의 개수를 담을 변수 nCnt를 선언했다. 그 뒤 Integer.toBinaryString(n)을 사용해서 n을 이진법으로 변환했다. 그 뒤 for문을 사용해서 strN의 1의 개수를 구했다. 다음으로는 n+1부터 조건에 나온 100000 이하의 수를 반복시키며 nCnt와 값이 같은, 즉 1의 개수가 같은 값을 찾아줬다. 그 뒤 answer에 i를 넣고 반복문을 종료했다. 마지막으로 answer을 반환해 줬다.

 

 

 

 

 

8. 피보나치 수

문제

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        int[] fibo = new int[1000001];
        
        fibo[0] = 0;
        fibo[1] = 1;
        
        for(int i=2; i<=n; i++){
            fibo[i] = (fibo[i-1] + fibo[i-2]) % 1234567;
        }
        
        answer = fibo[n];
        
        return answer;
    }
}

<작성한 코드>

정수형 배열 fibo를 만들어 크기를 1000001개로 지정해 줬다. 그 뒤 fibo [0]에는 0, fibo [1]에는 1을 대입해 줬다. 다음은 for문을 사용해서 2부터 n까지 fibo [i]에 fibo [i-1] + fibo [i-2]를 1234567로 나눈 나머지값을 넣어줬다. 그 뒤 fibo [n]의 값을 answer에 넣어주고 반환하였다.

반응형

+ Recent posts