나머지가 1이 되는 수 찾기

김나영·2023년 6월 20일
0

프로그래머스

목록 보기
25/39

문제 : 나머지가 1이 되는 수 찾기

풀이

for (int i = 2; i < n; i++)
  • 입력되는 n의 최솟값이 3이므로 2부터 n보다 작을 때까지 반복
if(n % i == 1) {
   answer = i;
   break;
}
  • 나머지가 1이 되면 해당 값이 가장 작은 값이므로 answer에 값을 대입해주고 반복을 종료

전체 코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i = 2; i < n; i++) {
            if(n % i == 1) {
                answer = i;
                break;
            }
        }
        return answer;
    }
}

문제 발생

for (int i = 0; i < n; i++)
  • 나도 모르게 i를 0부터 시작

  • n이라는 자연수의 나머지를 구할 때 2보다 작은 수로 나누면 오류 발생

해결

for (int i = 2; i < n; i++)
  • 입력되는 n의 최솟값이 3이므로 2부터 시작

또 다른 풀이

    public int solution(int n) {
        int answer = 0;
        // n - 1의 1이 아닌 가장 작은 약수를 구하면 됨
        int m = n - 1;
        for(int i = 2; i <= m; i++){
            if(m % i == 0) {
                answer = i;
                break;
            }
        }
        return answer;
    }

0개의 댓글