카테고리 없음

이것이 취업을 위한 코딩 테스트다 스위프트 탐욕법 풀기 4

Thor_yeom 2022. 9. 7. 11:54

문제 : 1이 될 때 까지

 

import Foundation

// 파라미터로 number 값 N , divide 나누는 값 K으로 설정 하고, 리턴 값으론 횟수를 나타내는 것이 숫자 이므로 Int로 설정
func solution(number: Int, divide: Int) -> Int {
    
    var count = 0 // 횟수를 저장할 수 있는 변수 생성
    var objcet = number // 반복문에서 number를 활용하기 위해 object 변수 생성, number를 변수로 지정하지 않으면 파라미터는 let ( 상수 ) 이기 때문에 값을 변형 할 수 없음
    
    while objcet != 1 { // number가 1이 아니라면
        if objcet % divide == 0 { // N이 K로 나누어떨어지면
            objcet = objcet / divide // N을 K로 나눈 몫을 n으로 지정
        } else {
            objcet -= 1 // n이 k로 나누어 떨어지지 않으면 object - 1
        }
        count += 1 // 카운트가 +1 되고 다시 while문으로 반복됌
        
        if objcet == 1 { // number가 1이 되는 순간 break가 걸려 반복문이 종료됌
            break
        }
    }
    
    return count // while문을 통해 쌓인 count 리턴
}

출처: https://ios-developer-storage.tistory.com/entry/Algorithm-Swift-로-푸는-탐욕Greedy-문제-나동빈책 [마늘맨의 iOS는 즐거워:티스토리]

문제를 풀다가  굳이 파라미터로 받은 number 를 var object를 만들어 할당하는 이유에 대해 궁금해서

변수를 만들지 않고 코딩을 해보니 

 

 

함수의 파라미터는 let ( 상수 ) 이기 때문에 값을 변형 할 수 없다는 오류창이 떴다. 

이 또한 함수 파트 문법을 공부 할 때 배웠던 부분인데...ㅜㅜ 

코딩테스트를 공부하면서 다시 한번 문법을 돌이켜 보게 된다.