자료구조 & 알고리즘/프로그래머스 (Java)

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

오징어달료 2024. 11. 9. 23:25

월간 코드 챌린지 시즌 3
난이도 : Lv.1

문제설명

자연수 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 해야 합니다.

Solution

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i = 2; i < n; i++){
        
            // 조건이 가장 작은 자연수 이기 때문에
            // if문에서 해당 조건에 맞는 값을 처리해주면 됨
            if(n%i==1){
                answer = i;
                break;
            }
        }
        
        return answer;
    }
}

해설

문제 설명에서 n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수라는 말에 주목해 보면 조건으로 주어지는 n의 값을 나누었을때 나머지가 1이 되도록 하는 수중에서 가장 작은 수를 뽑으면 되는 문제이다. 그렇기에 자연스럽게 for 문을 활용해서 n의 값 만큼 순회하면서 나누었을때 1이 되는 수에 대하여 if 조건문으로 처리하면 해결할 수 있는 문제이다.

포인트

 문제 설명에서 주어진 나머지가 1이 되도록 하는 가장 작은 자연수를 조건식에 맞게 풀어내면 된다.