본문 바로가기

프로그래머스 (Swift)/기초

[Day15-3] 1로 만들기

문제

 

내 정답 코드

import Foundation

func solution(_ num_list:[Int]) -> Int {
    var num_list = num_list
    var count:Int = 0
    
    for i in 0..<num_list.count {
        while(true) {
            if num_list[i].isMultiple(of: 2) {
                num_list[i] /= 2
                count += 1
            } else if !num_list[i].isMultiple(of: 2) {
                if num_list[i] == 1 { break }
                num_list[i] = (num_list[i]-1) / 2
                count += 1
            }
        }
    }
    
    return count
}

 

#

1. 배열의 값들마다 특별한 연산을 반복하여 1을 만드는데

2. 이 연산이 총 몇 번 이루어졌는지 구하는 문제이다.

3. 연산을 반복하여 1이 되면 반복문을 탈출하고 다음 값으로 연산을 시작한다.

4. 연산이 진행될 때마다 count를 올리고 최종 count를 반환한다.


배운 기술