머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 {price}가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.
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)문제점
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)문제점
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
머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
def solution(money): cup = money // 5500 change = money % 5500 return [cup,change]
이번 문제들을 통해 단순히 정답을 맞히는 것보다
문제를 어떻게 구조화해서 생각해야 하는지가 더 중요하다는 걸 느꼈다.
같아 보이는 문제라도
를 먼저 구분하지 않으면 쉽게 실수할 수 있었다.
앞으로는 코드를 바로 작성하기보다
수식과 조건을 먼저 정리한 뒤 구현하는 습관을 들이려고 한다.
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
def solution(num_list): return list(reversed(num_list))
arr[ : : -1]arr. reverse()list(reversed(arr))슬라이싱은 단순히 리스트를 자르는 문법이 아니라
인덱스, 범위, 방향을 한 번에 표현할 수 있는 강력한 도구라는 걸 느꼈다.
특히 start, stop, step의 의미를 정확히 이해하니
배열 뒤집기나 구간 추출 같은 작업을
반복문 없이도 간결하게 처리할 수 있었다.
앞으로는 리스트를 다룰 때
for문부터 떠올리기보다 슬라이싱으로 해결할 수 있는지
먼저 생각해보는 습관을 들여보려고 한다.