본문 바로가기

TIL

[240223] SQL: 코드카타 131 & 파이썬: 코드카타 35

[파이썬 코드카타]

부족한 금액 계산하기

https://school.programmers.co.kr/learn/courses/30/lessons/82612

 

1) 어떤 문제가 있었나

놀이기구를 n번 이용하면, 이용할 때마다 n배의 이용료 부과 > 금액이 부족하다면 모자란 금액을, 아니면 0을 반환하는 문제

 

2) 내가 시도해본 건 무엇인가

for 문과 누적합을 활용해 n번 이용할 때마다 돈이 늘어나도록 하고, 최종 금액이 money보다 큰지 작은지 if 절로 판별

if 절 결과 값을 바로 return 하고자 했으나 이 경우, 반복문이 돌지 않아 값이 0만 나와 실패

 

3) 어떻게 해결했나

return 열을 for문과 동일한 위치로 조정하여 루프가 모두 돌고 마지막 최종 값이 출력되도록 수정 

def solution(price, money, count):
    answer = 0
    for i in range(1, count+1):
        answer += price*i
        if money - answer < 0:
            result = abs(money - answer)
        else: 
            result = 0 
    return result


4) 무엇을 새롭게 알았나
- return을 if 절 밑에 넣고 싶었다면, for문과 if절을 맞춰주는 것도 가능. 
└ 만약 돈이 부족하지 않을 때 0이 아닌 다른 숫자를 반환해야 한다면 내 답은 틀렸을 듯

└ n번의 놀이기구를 모두 탄다면 필요한 금액을 완전히 구한 뒤에, if 절로 체크하는 것이 더 정확함

def solution(price, money, count):
    answer = 0
    for i in range(1, count+1):
        answer += price*i
    if money - answer < 0:
        return abs(money - answer) # abs 없이 순서를 반대로 해도 answer - money 
    else: 
        return 0