자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
3 ≤ n ≤ 1,000,000
n result 10 3 12 11
- 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.
- 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.
class Solution {
public int solution(int n) {
int answer = 0;
for(int x=2; x<=n; x++){
if(n % x == 1){
answer = x;
break;
}
}
return answer;
}
}
class Solution {
public int solution(int n) {
int answer = 1;
while(true) {
if (n%answer==1) break;
answer++;
}
return answer;
}
}
저렇게 간단하게 풀 수 있는데 왜 나는 복잡하게 생각해서 풀지도 못했지😢? 부끄럽다,, 저거 조차 간단하게 생각하지 못했다 나는 왜 굳이 비교해서 작은 수를 구하려고 했냐고 그냥 for문에서 작은 수 부터 시작하면 1로 나머지가 나오는 애로 break하면 되는데 말이야,,, 좀 더 잘 생각해봐야하는거 같다.
while문으로 할 수 있다!!