프로그래머스

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

뿌비 2024. 7. 3. 22:05
728x90

🔥 문제 설명

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

 

🔥 제한사항

3 ≤ n ≤ 1,000,000

 

🔥 입출력 예

n result
10 3
12 11

 

🔥 입출력 예 설명

입출력 예 #1  10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.

입출력 예 #2 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.


🔥 코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        int cnt = n;
        
        for(int i =0; i<n; i++){
            if((n % cnt) == 1){
                if(answer == 0 || answer > cnt){
                    answer = cnt;    
                }
            }
            cnt = cnt - 1;
        }
        return answer;
    }
}

🔥 문제 풀이 과정

  1. n은 자연수이며 n의 범위는 3 ≤ n ≤ 1,000,000이고, return 해야 하는 값은 n을 x로 나눈 나머지가 1이 될 수 있는 x의 값들 중 제일 작은 값을 알아내야 한다
  2. 그래서 일단 처음에는 n 자기 자신의 값부터 -1 씩 차례로 내려와 %를 해야겠다고 생각했다
  3. 그래서 cnt에 n을 담아 놓고 n % cnt를 해서 나머지가 1인 값을 찾아냈다
  4. answer가 0이라면 바로 cnt를 담아주고 처음이 아니라면 answer과 비교해 cnt가 작을 때만 넣어주었다
  5. for 가 다시 돌기 전 cnt의 값을 -1 씩 줄여주면서 마무리했다

 

728x90