코드카타 : 나머지가 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 |