# 문제
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
# 제한사항
3 ≤ n ≤ 1,000,000
# 입출력 예
# 풀이
class Solution {
fun solution(n: Int): Int {
var answer: Int = 0
for (x in 2..n-1){
if (n%x == 1){
answer = x
break
}
}
return answer
}
}
먼저 1과 n은 나머지가 1이 될 수 없기 때문에, 불필요한 반복을 제거하기위해서 2부터 n-1까지만 반복문을 돌게했고,
n을 x로 나눴을때 나머지가 1이면, 나머지가 1이 되는 첫 수를 리턴될 answer변수에 대입하고 반복문을 종료하면된다
그리고 반환타입을 Int로 설정해놨기 때문에 return을 사용해서 Int값을 반환해줘야된다
# 다른 사람 풀이
class Solution {
fun solution(n: Int): Int {
var answer=0
for(i in 1..n){
if(n%i==1){
answer=i
break
}
else{
answer=i
}
}
return answer
}
}
class Solution {
fun solution(n: Int): Int {
var count: Int = 0
while(true){
count++
if(n % count == 1 ) break
}
return count
}
}
class Solution {
fun solution(n: Int): Int {
var answer: Int = 0
for (x in 2..n-1){
if (n%x == 1){
return x
}
}
return 0
}
}
class Solution {
fun solution(n: Int) = (1..n).first { n % it == 1 }
}
first를 사용해서 작성하니깐 굉장히 간단해졌네.. first에 관해서 학습해봐야겠다
'개발 노트 > 알고리즘[Kotlin]' 카테고리의 다른 글
프로그래머스 알고리즘 문제[자연수 뒤집어 배열로 만들기] (0) | 2024.03.08 |
---|---|
프로그래머스 알고리즘 문제[x만큼 간격이 있는 n개의 숫자] (0) | 2024.03.07 |
프로그래머스 알고리즘 문제[약수의 합] (0) | 2024.03.05 |
프로그래머스 알고리즘 문제[자릿수 더하기] (0) | 2024.02.24 |
프로그래머스 알고리즘 문제[평균 구하기] (0) | 2024.02.24 |