[코딩테스트] 입문 - Day.05

jang·2026년 2월 18일

프로그래머스 입문

목록 보기
1/12

문제 1. 👚옷 가게 할인 받기👚

[문제]

머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.

구매한 옷의 가격 {price}가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.

1. 나의 첫 번째 코드

def solution(price): if price >= 100000: return price * 0.95 elif price >= 300000: return price * 0.9 elif 1000000 >= price >= 500000: return price * 0.8 else: return "Wrong price"

⇒ 결과 : 2번의 테스트 중 1개 오류 발생

*테스트를 통과하더라도 문제 조건과 정확히 일치하지 않거나 불필요한 조건이 많으면 유지보수와 확장에 불리하다.

1)문제점

  • 조건문의 순서가 잘못됨
    • if/elif는 위에서부터 하나만 실행된다.
      • 예를 들어 price = 500000이면 첫번째 if 조건에 들어가기 때문에 밑에 조건들은 검사 안하고 결과 return
    • 그래서 30만, 50만 이상이어도 전부 5% 할인만 적용됨
    • 조건문을 작성할 때는 항상 “큰 범위” 먼저
  • 반환 타입이 잘못됨
    • 프로그래머스 문제는 항상 숫자를 리턴해야 함

2. 나의 두 번째 코드

def solution(price): if 299999>= price >= 100000: return price * 0.95 elif 499999 >= price >= 300000: return price * 0.9 elif 1000000 >= price >= 500000: return price * 0.8 else: return 0

⇒ 결과: 테스트는 문제 없지만 코드가 깔끔하지 않고, 오류 발생 가능성 있음

1)문제점

  • 할인 안되는 경우의 return 값
    • 할인이 없으면 원래 가격을 그대로 지불 따라서 return price가 되어야 함.
  • 반환 타입이 float이 아닌 int여야 함

3. 최종 코드

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

✨ 배운 점

  • if / elif 조건문은 위에서부터 하나만 실행 된다
  • 범위 조건이 있을 때는 큰 값부터 검사
  • 코딩테스트에서는 return 타입이 매우 중요
  • 문제에 없는 조건은 만들지 않는 것이 좋다.

문제 2. ☕️아이스 아메리카노☕️

[문제]

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

1. 나의 첫 번째 코드

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

✨ 마무리

이번 문제들을 통해 단순히 정답을 맞히는 것보다

문제를 어떻게 구조화해서 생각해야 하는지가 더 중요하다는 걸 느꼈다.

같아 보이는 문제라도

  • 올림이 필요한 경우인지
  • 최소공배수를 구해야 하는 경우인지
  • 단순한 정수 나눗셈 문제인지

를 먼저 구분하지 않으면 쉽게 실수할 수 있었다.

앞으로는 코드를 바로 작성하기보다

수식과 조건을 먼저 정리한 뒤 구현하는 습관을 들이려고 한다.


문제 3. 🌪️배열 뒤집기🌪️

[문제]

정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.

1. 나의 첫 번째 코드

def solution(num_list): return list(reversed(num_list))

2. 다양한 배열 뒤집기 방법

  • 슬라이싱 arr[ : : -1]
  • 리스트 자체를 뒤집기 arr. reverse()
  • reversed( ) 함수 list(reversed(arr))

✨ 마무리

슬라이싱은 단순히 리스트를 자르는 문법이 아니라

인덱스, 범위, 방향을 한 번에 표현할 수 있는 강력한 도구라는 걸 느꼈다.

특히 start, stop, step의 의미를 정확히 이해하니

배열 뒤집기나 구간 추출 같은 작업을

반복문 없이도 간결하게 처리할 수 있었다.

앞으로는 리스트를 다룰 때

for문부터 떠올리기보다 슬라이싱으로 해결할 수 있는지

먼저 생각해보는 습관을 들여보려고 한다.

profile
비전공자가 AI 엔지니어가 되는 과정

0개의 댓글