문제 설명
자연수 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
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
서울에서 김서방 찾기 (0) | 2022.10.28 |
---|---|
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. (0) | 2022.10.25 |
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. (0) | 2022.10.25 |
머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다 (0) | 2022.10.24 |
정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요. (0) | 2022.10.24 |
댓글