728x90
프로그래머스 문제
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
n | result |
10 | 3 |
12 | 11 |
코틀린 나머지가 1이 되는 수 찾기 답
class Solution {
fun solution(n: Int): Int {
for( i in 2..n-1)
for (n%i == 1) return i
}
return 0
}
}
코틀린 풀이
매게변수 n을 입력받아 for문을 사용해 i 는 2부터 n -1 까지의 값을 순회하는 반복문을 만듭니다.
그 후 순회 중인 값 i가 n으로 나누어 떨어지지 않고 나머지가 1이면, 해당 값을 반환하고 함수를 종료합니다.
반복문을 모두 순회했는데도 나누어 떨어지지 않는 수를 찾지 못했을 경우 0을 반환합니다.
- 1은 모든 정수의 약수이기 때문에 2부터 시작합니다.
n - 1을 하는 이유?
만약 루프의 종료 조건을 for (i in 2..n)으로 설정한다면 루프는 2부터 n까지의 모든 수를 검사하게 됩니다. 이 경우 n 자체가 n % i == 1을 항상 만족시키는 경우가 생길 수 있습니다. 그러나 우리가 찾고자 하는 것은 1을 제외한 가장 작은 양의 정수이므로, n 자체는 고려하지 않기 위해 종료 조건을 n-1로 설정합니다.
즉, for (i in 2..n-1)은 2부터 n-1까지의 범위에서만 n을 나눌 때 나머지가 1인 i를 찾는 것을 의미합니다.
728x90
반응형
'Kotlin Language > programmers' 카테고리의 다른 글
Kotlin - 문자열을 정수로 바꾸기 프로그래머스 코딩 연습 ( 18 ) (0) | 2023.12.06 |
---|---|
Kotlin - 자연수 뒤집어 배열로 만들기 프로그래머스 코딩 연습 ( 17 ) (0) | 2023.12.06 |
Kotlin - x만큼 간격이 있는 n개의 숫자 ( 16 ) (0) | 2023.12.05 |
Kotlin - 약수의 합 프로그래머스 코딩 연습 (14) (0) | 2023.12.03 |
Kotlin - 자릿수 더하기 프로그래머스 코딩 연습 (13) (0) | 2023.11.29 |
Kotlin - 평균 구하기 프로그래머스 코딩 연습 (12) (1) | 2023.11.28 |