문제 설명
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
제한사항
입출력 예
nresult
10 | 3 |
12 | 11 |
입출력 예 설명
입출력 예 #1
입출력 예 #2
풀이코드
// 짝수일때는 무조건 답은 홀수로 나오고
// 홀수일때는 무조건 답이 짝수로 나오니까 불필요한 반복문을 줄이자
class Solution {
public int solution(int n) {
int answer = 2; // 3부터 시작이니까 나누기 시작하는수는 2부터시작한다
// 짝수일땐 홀수로 나눠주기
if(n%2 == 0) {
answer = 3;
} else {
return 2; // 홀수면 최소수는 무조건 2다
}
// 반복문 돌리고 나머지가 1로 떨어지는 최소 수 찾기
while(answer < n) {
if(n%answer == 1) {
return answer; // 찾았으면 걔가 최소수니까 더이상 반복 하지말자
}
answer += 2;
}
return answer;
}
}
풀이방법
제목 그대로 나머지값이 1이 되는 최소 수를 찾는문제이다. 반복문을 한번 돌려서 증가되는만큼 나눠보고 나머지가 1이 나오면 최소수 이므로 return 해주면된다. 반복문을 최대한 줄이고싶어서 몇가지 조건을 줬다
[Programmers] [1차] 비밀지도 (0) | 2021.11.10 |
---|---|
[Programmers] 예산 (0) | 2021.11.09 |
[Programmers] 최소직사각형 (0) | 2021.11.08 |
[Programmers] 3진법 뒤집기 (0) | 2021.11.08 |
[Programmers] [1차] 다트게임 (0) | 2021.11.06 |