본문 바로가기
코딩테스트/프로그래머스

나머지가 1이 되는 수 찾기

by java나유 2022. 10. 26.

문제 설명

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.


제한사항
  • 3 ≤ n ≤ 1,000,000

입출력 예nresult
10 3
12 11

입출력 예 설명

입출력 예 #1

  • 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.

입출력 예 #2

  • 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.

 

 

나의 코드:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

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

 

나의 풀이:

문제 제한사항을 잘 확인해야한다. n의 최소값이 3이다.

그러면, 반복문의 시작인 i는 2부터 돌아가게 해준다. 그리고 3으로 나누었을 때의 가장 작은 수를 구하면 되기 때문에

break;를 넣어주는게 포인트 였던 문제였던 것 같다. 대부분의 풀이가 같을 텐데,

 

사실 나는  문제를 보자마자 배열로 풀고싶었다.

처음에 n을 3으로 나누는 수들을 list에 담아서 list[0]번째 값을 넣으려고 했었다.

ㅋㅋㅋㅋ

 

결과:

728x90

댓글