나머지가 1이 되는 수 찾기
한 줄 요약n을 x로 나눈 나머지가 1이면 x는 n−1을 나누어떨어지게 한다. 답은 n−1의 약수 중 1을 뺀 가장 작은 것.
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++){
if(n%i==1){
answer = i;
break;
}
}
return answer;
}
}
i=1부터 시작해도 괜찮다 —n % 1은 항상 0이라 조건에 걸리지 않는다.- 처음 걸린
i에서break하므로 가장 작은 x가 답이다. - 가장 오래 도는 경우는 n−1이 소수일 때(약 n번). n ≤ 1,000,000이라 제한 안이다.
로컬 검증
3~50,000 전수 + 무작위 20,000 + 최악(n−1이 소수) 20개 → 70,020개 통과 기댓값: 에라토스테네스 체로 만든 "n−1의 가장 작은 소인수" 표 (제출 코드와 계산 방식이 다름)