문제 설명
자연수 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
'Code KATA > 알고리즘 코드카타' 카테고리의 다른 글
[2024.12.18] 자연수 뒤집어 배열로 만들기 (0) | 2024.12.18 |
---|---|
[2024.12.17] x만큼 간격이 있는 n개의 숫자 (0) | 2024.12.17 |
[2024.12.15] 약수의 합 (0) | 2024.12.16 |
[2024.12.14] 자릿수 더하기 (0) | 2024.12.16 |
[2024.12.13] 평균 구하기 (0) | 2024.12.13 |