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