본문 바로가기

개발 노트/알고리즘[Kotlin]

프로그래머스 알고리즘 문제[나머지가 1이 되는 수 찾기]

# 문제 

자연수 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에 관해서 학습해봐야겠다