TIL/알고리즘 공부

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

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

백준 단계별 풀기를 어느 정도 끝내서 슬슬 프로그래머스로 넘어갈까 한다.

프로그래머스는 Lv.1 ~ Lv.5까지 난이도가 정해져 있는데,

3을 구글링 없이 풀 정도면 왠만한 IT 기업 코테는 통과한다고 보면 된다더라..!(카더라!)

 

그래서 일단 1단계, 2단계를 빠르게 다 풀고

3단계 문제들 위주로 무한 복습을 하고자 한다.

 

1단계 문제들은 전반적으로 내용이 쉬워서 코드만 기록해본다.

 


1) 짝수와 홀수

func solution(_ num:Int) -> String {
    return num % 2 == 0 ? "Even" : "Odd"
}

 

2) 평균 구하기

func solution(_ arr:[Int]) -> Double {
    let arrSum = arr.reduce(0) { $0 + $1 }
    let arrAvg = Double(arrSum) / Double(arr.count)   
    return arrAvg
}

 

3) 약수의 합

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

 

4) 정수 제곱근 판별

func solution(_ n:Int64) -> Int64 {
    var x = 0
    
    for i in 1...n {
        if n == i * i {
            x = Int(i + 1)
            break
        }
    }
    
    if x == 0 {
        return Int64(-1)
    } else {
        return Int64(x * x)
    }
}

 

5) 자릿수 더하기

import Foundation

func solution(_ n:Int) -> Int
{
    var answer:Int = 0

    return String(n).reduce(0, {$0+Int(String($1))!})
    
    return answer
}

 

6) 자연수 뒤집어 배열로 만들기

func solution(_ n:Int64) -> [Int] {
    return String(n).map{Int(String($0))!}.reversed()
}

 

7) 문자열 내 p와 y의 개수

import Foundation

func solution(_ s:String) -> Bool
{
    var ans:Bool = false
    var countP = 0
    var countY = 0
    
    for i in s {
        if i == "p" || i == "P" {
            countP += 1
        } else if i == "y" || i == "Y" {
            countY += 1
        }
    }

    if countP == countY {
        return !ans
    } else {
        return ans
    }
}

 

8) 하샤드 수

func solution(_ x:Int) -> Bool {
    let array = String(x).map{String($0)}
    var value: Int = 0
    
    for i in array {
        value += Int(i)!
    }
    
    if x % value == 0 {
        return true
    } else {
        return false
    }
}

 

9) 정수 내림차순으로 배치하기

func solution(_ n:Int64) -> Int64 {
    let array = String(n).map{String($0)}.sorted(by:>)
    var answer = String()
    for i in 0..<array.count{
        answer += array[i]
    }

    return Int64(answer)!   
}

 

10) 문자열을 정수로 바꾸기

func solution(_ s:String) -> Int {
    
    return Int(s)!   
}