본문 바로가기

Mobile/Swift

[코딩테스트 입문] Swift - Day 5

반응형

1. 피자 나눠 먹기 (2)
Q. 머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

func solution(_ n:Int) -> Int {
    
    var remainder: Int = 1
    
    while 6 * remainder % n != 0 {
        remainder += 1
    }
    
    return remainder
}

2. 피자 나눠 먹기 (3)
Q. 머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

func solution(_ slice:Int, _ n:Int) -> Int {
    return n % slice == 0 ? n / slice : n / slice + 1
}

3. 옷가게 할인 받기
Q. 머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.(8점)

func solution(_ price:Int) -> Int {
    var coin: Double = Double(price)
    var discount: Double = 0

    if coin >= 500000 {
        discount = coin * 0.2
    } else if coin >= 300000 {
        discount = coin * 0.1
    } else if coin >= 100000 {
        discount = coin * 0.05
    }

    return Int(coin - discount)
}

4. 아이스아메리카노
Q. 머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

func solution(_ money: Int) -> [Int] { [money / 5500, money % 5500] }

5. 삼각형의 완성조건 (1)
Q.선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
        - 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

func solution(_ sides: [Int]) -> Int {
    var sortedSides = sides.sorted()
    return sortedSides[0] + sortedSides[1] > sortedSides[2] ? 1 : 2
}
func solution(_ sides:[Int]) -> Int {sides.reduce(0) {$0+$1} - sides.max()!*2 > 0 ? 1 : 2}

6. 점의 위치 구하기
Q. 사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다. x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.

func solution(_ dot:[Int]) -> Int {
    var x = dot[0] > 0 ? "+" : "-"
    var y = dot[1] > 0 ? "+" : "-"

    switch [x, y] {
    case ["+", "+"]: return 1
    case ["+", "-"]: return 4
    case ["-", "+"]: return 2
    default: return 3
    }
}

7. 짝수 홀수 개수
Q. 정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

func solution(_ num_list:[Int]) -> [Int] {[num_list.filter {$0%2==0}.count, num_list.filter {$0%2==1}.count]}

8. 편지
Q. 머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요. 

func solution(_ message:String) -> Int {message.count * 2}

9. 특정 문자 제거하기
Q. 문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

func solution(_ my_string:String, _ letter:String) -> String {
    my_string.filter {$0 != Character(letter)}
}

10. 배열 원소의 길이
Q. 문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.

func solution(_ strlist:[String]) -> [Int] {strlist.map {$0.count}}

11. 배열 자르기
Q. 정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.

func solution(_ numbers:[Int], _ num1:Int, _ num2:Int) -> [Int] {numbers[num1...num2].map {$0}}

12. 최댓값 만들기
Q. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

func solution(_ numbers:[Int]) -> Int {
    numbers.sorted(by: >)[...1].reduce(1){$0*$1}
}

13. 문자 반복 출력하기
Q. 문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

func solution(_ myString:String, _ n:Int) -> String {
    return myString.map {String(repeating: $0, count: n)}.reduce("") {$0+$1}
}
func solution(_ myString:String, _ n:Int) -> String {
    return myString.map {String(repeating: $0, count: n)}.joined()
}

14. 문자열 안에 문자열
Q. 문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

func solution(_ str1:String, _ str2:String) -> Int {
    str1.contains(str2) ? 1 : 2
}

 

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
반응형