[TIL] code dump by a procrastinator

Eden·2024년 11월 23일
0

TIL

목록 보기
50/92
post-thumbnail

⁉️ 프로그래머스: 옷 가격 할인 받기

문제 설명

머쓱이는 옷가게에서 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인받습니다. 구매할 옷의 가격이 주어질 때, 지불해야 할 금액을 계산하는 함수를 작성합니다.

제한사항

10 ≤ price ≤ 1,000,000, 소수점 이하를 버린 정수를 반환해야 합니다.

제출 코드

import Foundation

func solution(_ price: Int) -> Int {
    if price >= 500000 {
        return Int(Double(price) * 0.8)
    } else if price >= 300000 {
        return Int(Double(price) * 0.9)
    } else if price >= 100000 {
        return Int(Double(price) * 0.95)
    } else {
        return price
    }
}

리팩토링 후 코드

import Foundation

func solution(_ price: Int) -> Int {
    switch price {
    case 500000...:
        return Int(Double(price) * 0.8)
    case 300000..<500000:
        return Int(Double(price) * 0.9)
    case 100000..<300000:
        return Int(Double(price) * 0.95)
    default:
        return price
    }
}

풀이 과정

  • 가격에 따라 할인율을 계산하고, 최종 지불 금액을 반환하도록 했다.
  • 조건문을 사용해 가격에 따른 할인율을 적용하여 계산했다.

배운 점

할인율 계산 시 조건문을 통해 논리적인 흐름을 짜는 연습을 할 수 있었다. 또한, 타입지정의 중요성을 다시금 깨달았다. 가독성을 높이기 위해 불필요한 분기를 줄이는 리팩토링이 필요함을 느꼈다.



⁉️ 프로그래머스: 아이스 아메리카노

문제 설명

머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한 잔에 5,500원입니다. 머쓱이가 가지고 있는 돈으로 최대한 몇 잔의 커피를 마실 수 있는지, 그리고 남는 돈을 계산하는 함수를 작성합니다.

제한사항

0 < money ≤ 1,000,000

제출한 코드

import Foundation

func solution(_ money:Int) -> [Int] {
    let cup = money / 5500
    let remainingMoney = money % 5500
    return [cup, remainingMoney]
}

풀이 방법

  • 가지고 있는 돈을 5,500으로 나누어 최대 잔 수를 구하고, 나머지를 통해 남는 돈을 계산했다.

배운 점

단순한 나눗셈 연산을 통해 문제를 효율적으로 해결할 수 있다는 점과, 나머지 계산을 활용해 잔돈을 처리하는 기본적인 수학적 사고를 연습할 수 있었다.



⁉️ 프로그래머스: 개미 군단

문제 설명

개미 군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가야 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을, 일개미는 1의 공격력을 가지고 있습니다. 사냥감의 체력 hp가 주어질 때, 최소한의 개미 수를 사용해 체력을 정확히 줄일 수 있도록 병력 구성을 계산합니다.

제한사항

hp는 자연수, 0 ≤ hp ≤ 1,000

제출한 코드

import Foundation

func solution(_ hp:Int) -> Int {
    var count = 0
    var a = hp / 5
    count += a
    var b = (hp - count * 5) / 3
    count += b
    var c = hp - a * 5 - b * 3
    count += c
    return count
}

리팩토링 후 코드

import Foundation

func solution(_ hp:Int) -> Int {
    let generals = hp / 5
    let soldiers = (hp % 5) / 3
    let workers = (hp % 5) % 3
    return generals + soldiers + workers
}

풀이 방법

  • 큰 공격력을 가진 개미부터 차례대로 나누어 최소한의 병력 구성을 계산했다.
  • 나머지 연산을 통해 체력을 계속 줄여가며 최종적으로 필요한 일개미의 수까지 구했다.

배운 점

반복적인 나눗셈과 나머지 연산을 통해 최적의 해결책을 찾는 사고를 훈련할 수 있었다.

profile
Frontend🌐 and iOS

0개의 댓글