[Programmers/Lv. 0] 코딩테스트 입문 Day 5 - 수학, 배열 (Python)

2023. 3. 13. 18:40Algorithm

1. 옷가게 할인 받기


10만원 이상 사면 5%, 30만원 이상 사면 10%, 50만원 이상 사면 20%를 할인해주는 옷가게가 있다.
구매한 옷의 가격이 주어질 때, 할인을 적용하여 지불해야 할 금액을 구하라는 문제이다.

 

(내가 생각한 풀이 과정)

가격에 따라 if-elif-else문을 이용하여 조건을 나누면 쉽게 답을 구할 수 있다고 생각했다.

 

(코드)

더보기

💡 내 코드

def solution(price):
    if price < 100000:
        return price
    elif price >= 100000 and price < 300000:
        return int(price*0.95)
    elif price >= 300000 and price < 500000:
        return int(price*0.9)
    else:
        return int(price*0.8)

 

💡 다른 사람의 풀이 코드

할인율을 별도의 딕셔너리에 저장한다. 이 딕셔너리의 키는 할인이 적용되는 경계선의 가격, 값은 할인율이 되며,
경곗값에 따라 price 입력값과 할인율을 곱해주면 답을 구할 수 있을 것이다.

def solution(price):
    discount_rates = {500000: 0.8, 300000: 0.9, 100000: 0.95, 0: 1}
    for discount_price, discount_rate in discount_rates.items():
        if price >= discount_price:
            return int(price * discount_rate)

 


2. 아이스 아메리카노


한 잔에 5,500원 하는 아이스 아메리카노가 있을 때,
주어진 돈 money로 최대 마실 수 있는 아메리카노 잔 수와 남는 돈을 담은 배열을 반환하라는 문제이다.

 

(내가 생각한 풀이 과정)

나누기 연산자 "//"와 나머지 연산자 "%"를 사용하면 쉽게 해결할 수 있는 문제이다.

 

(코드)

더보기

💡 내 코드

def solution(money):
    return [money//5500, money%5500]

 


3. 나이 출력


나이 age가 주어질 때 2022년 기준으로 몇 년도에 태어났는지 구할 수 있도록 하라는 문제이다.

 

(내가 생각한 풀이 과정)

2022에서 나이를 뺀 후, 태어나자마자 한 살이라는 점을 감안해 +1을 해주면 될 것이라 생각했다.

 

(코드)

더보기

💡 내 코드

def solution(age):
    return 2022-age+1

 


4. 배열 뒤집기


정수가 들어있는 배열을 뒤집으라는 문제이다.

 

(내가 생각한 풀이 과정)

파이썬 리스트 슬라이싱의 세 번째 원소는 간격(step)을 의미한다. 이 원소를 -1로 설정하면 리스트를 뒤집을 수 있다.

 

(코드)

더보기

💡 내 코드

def solution(num_list):
    return num_list[::-1]