TIL/알고리즘 공부

프로그래머스 Lv. 1 Swift 알고리즘 연습 (2)

여의도사노비 2022. 9. 20. 10:36
728x90

1단계 문제 10개


11) x만큼 간격이 있는 n개의 숫자

func solution(_ x:Int, _ n:Int) -> [Int64] {
    var array = [Int64]()
    
    for i in Int64(1)...Int64(n) {
        let value = Int64(x) * i
        array.append(value)
    }
    
    return array
}

 

12) 나머지가 1이 되는 수 찾기

import Foundation

func solution(_ n:Int) -> Int {
    var value = 0
    
    for i in 1...n {
        if n % i == 1 {
           value = i
            break
        }
    }
    
    return value
}

 

13) 콜라츠 추측

func solution(_ num:Int) -> Int {
    var value = num
    var count = 0
    
    if num == 1 {
        return 0
    } else {
        for i in 1... {
            if i > 500 {
                count = -1
                break
            } else {
                if value % 2 == 0 {
                    value = value / 2
                    count += 1
                    if value == 1 { break }
                } else {
                    value = value * 3 + 1
                    count += 1
                    if value == 1 { break }
                }
            }
        }
        
        return count
    }
}

 

14) 두 정수 사이의 합

func solution(_ a:Int, _ b:Int) -> Int64 {
    var value = 0
    
    if a == b {
        return Int64(a)
    } else if a < b {
        for i in a...b {
            value += i
        }
    } else if a > b {
        for j in b...a {
            value += j
        }
    }
    
    return Int64(value)
}

 

15) 서울에서 김서방 찾기

func solution(_ seoul:[String]) -> String {
    var arr = [String]()
    var count = 0
    
    for i in seoul {
        arr.append(i)
    }
    
    for j in 0...arr.count - 1 {
        if arr[j] == "Kim" { count = j }
    }
    
    return "김서방은 \(count)에 있다"
}

 

16) 핸드폰 번호 가리기

func solution(_ phone_number:String) -> String {
    var arr = phone_number.map{String($0)}
    
    if arr.count > 4 {
        for i in 0...arr.count - 5 {
            arr[i] = "*"
        }
    }
    
    return arr.joined(separator:"")
}

 

17) 나누어 떨어지는 숫자 배열

func solution(_ arr:[Int], _ divisor:Int) -> [Int] {
    var array = arr.map{Int($0)}
    var array2 = [Int]()
    
    for i in 0...array.count-1 {
        if array[i] % divisor == 0 {
            array2.append(array[i])
        }
    }
    
    if array2.count == 0 {
        return [-1]
    } else {
        return array2.sorted()
    }
}

 

18) 제일 작은 수 제거하기

func solution(_ arr:[Int]) -> [Int] {
    var array = arr.map{Int($0)}
    var idx = 0
    
    if arr.count > 1 {
        idx = array.index(of: array.min()!)!
        array.remove(at: idx)
    } else {
        array = [-1]
    }
    
    return array
}

 

19) 음양 더하기

import Foundation

func solution(_ absolutes:[Int], _ signs:[Bool]) -> Int {    
    var array1 = absolutes.map{Int($0)}
    var array2 = signs.map{Bool($0)}
    
    for i in 0...array1.count-1 {
        if array2[i] == false {
            array1[i] = array1[i] * -1
        }
    }
    
    return array1.reduce(0, +)
}

 

20) 수박수박수박수박수박수?

func solution(_ n:Int) -> String {
    var array = [Character]()
    
    for i in 1...n {
        if i % 2 == 0 {
            array.append("박")
        } else {
            array.append("수")
        }
    }
    
    return String(array)
}