Code KATA/알고리즘 코드카타

[2024.12.16] 나머지가 1이 되는 수 찾기

iiblueblue 2024. 12. 16. 17:10

문제 설명

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

 

 

제한사항

  • 3<=n<=1,000,000

 

 

입출력 예

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

 

 

문제 풀이

풀이 언어 : C++

#include <string>
#include <vector>

using namespace std;

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

약수를 구하는 것 보다 쉽다.

for문으로 x를 2부터 n-1까지 돌리면서 n%x의 값이 1이 되는 순간 바로 return 하면 된다. 가장 작은 수 구하는 것이 문제이기 때문에 발견하자마자 바로 return해도 된다. 그리고 x는 1일 때, x가 n일 때는 나머지가 1이 결코 나올 수 없기 때문에 애초에 for문에서 제외해주었다.

 

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/87389

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr