Android 앱개발 공부/알고리즘 코드카타(Algorithm Code Kata)

나머지가 1이 되는 수 찾기

bunny code 2024. 6. 11. 10:01

 

 

코드카타 : 나머지가 1이 되는 수 찾기


 

* return 위치에 따른 반환 차이

 

* 예제1

fun main() {
    print("숫자를 입력하세요 : ")
    var number = readLine()!!.toInt()

    var result = Solution()

    println("${result.solution(number)}")
}

class Solution {
    fun solution(n: Int): Int {
        var answer: Int = 0
        var x: Int = 0
        for(x in 2..n-1){
            if(n%x==1)
            answer = x
        }
        return answer
    }
}

 

* 출력 결과

숫자를 입력하세요 : 10
9

 

 

* 예제2

fun main() {
    print("숫자를 입력하세요 : ")
    var number = readLine()!!.toInt()

    var result = Solution()

    println("${result.solution(number)}")
}

class Solution {
    fun solution(n: Int): Int {
        
        var x: Int = 0
        for(x in 2..n-1){
            if(n%x==1)
            return x
        }
        return 0
    }
}

 

* 출력 결과

숫자를 입력하세요 : 10
3

 

조건문 내부에서 answer가 x의 값을 받고 조건문 외부에서 return 이루어지는 1번은 출력결과가 9, 조건문 내부에서 바로 return x하는 2번은 출력결과가 3이다. 왜 이런 차이가 날까?

 

1번은 조건을 만족하는 값을 찾으면 answer에 저장하지만 루프가 끝날 때까지 계속해서 조건을 검사한다. 마지막으로 조건을 만족한 값을 answer에 저장하고 루프가 끝난 후 그 값을 반환한다.

 

2번은 조건을 만족하는 값을 찾자마자 반환한다. 따라서 첫 번째 조건을 만족하는 x 값을 반환한다.

 

즉, 1번은 마지막으로 조건을 만족한 값(큰 값)을 반환하는 것이고 2번은 만족하는 값은 찾자마자 반환(작은 값)을 반환하는 것이다. 사실상 1번은 n-1의 결과를 return하는거나 다름이 없는 것..

 

오늘 코드카타를 풀면서 return 위치에 따른 반환 차이에 알게 되었다.

 

 

'Android 앱개발 공부 > 알고리즘 코드카타(Algorithm Code Kata)' 카테고리의 다른 글

짝수의 합  (0) 2024.04.17
각도기  (0) 2024.04.16
두 수의 나눗셈  (0) 2024.04.16
두 수의 합  (0) 2024.04.16
숫자 비교하기  (0) 2024.04.16