알고리즘/알고리즘 풀이

[프로그래머스_1] 나머지가 1이 되는 수 찾기 JAVA

데부한 2022. 6. 15. 00:17
반응형

 

코딩테스트 연습 - 나머지가 1이 되는 수 찾기

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 입

programmers.co.kr

 

 

문제 설명

자연수 n 매개변수로 주어집니다. n x 나눈 나머지가 1 되도록 하는 가장 작은 자연수 x return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 있습니다.

 

제한 사항

  • 3 ≤ n ≤ 1,000,000

 

입출력 예

 

CODE

class Solution {
    public int solution(int n) {
        
        boolean isEven = n % 2 == 0 ? true : false;
        
        if(isEven) {
            for(int i = 1; i < n; i+=2) {
                if(n % i == 1) return i;
            }
        } else {
            for(int i = 1; i < n; i++) {
                if(n % i == 1) return i;
            }
        }
        return -1;
    }
}

처음에는 쉽게 생각해서 for문의 i 값을 1로 주고 1씩 증가시켜서 나머지 연산을 하는 방법으로 코딩했는데 조금 더 빠르게 하는 방법이 없을까 고민하다가 n의 값이 짝수인 경우에는 짝수로 나눈 나머지 값이 무조건 짝수라는 생각에 for문을 돌기 전에 n의 값이 짝수인지 판별 후 짝수이면 2씩 증가하고, 홀수이면 원래 생각했던 i가 1씩 증가하는 for문을 작성했다. 그런데 더 생각해보니 홀수의 경우는 무조건 2로 나누면 나머지가 1인 거 같아 코드를 변경하고 제출해보니 정답이었다..!

 

반응형

 

CODE2

class Solution {
    public int solution(int n) {
        
        boolean isEven = n % 2 == 0 ? true : false;
        
        if(isEven) {
            for(int i = 1; i < n; i+=2) {
                if(n % i == 1) return i;
            }
        } else return 2; // n 값이 홀수인 경우에는 무조건 2를 return
        return -1;
    }
}

 

실행 결과

 

반응형