1주차_부족한 금액 계산하기

처음 코드

using namespace std;

long long solution(int price, int money, int count)
{
    
    int answer;
    int cost=0;
    for (int i=1; i<=count; i++){
        cost=cost+price*i;
    }
    answer=money-cost;
    if(answer<0) return -answer;
    else return 0;
    
}

위 코드로 진행한 결과 다음과 같이 4개의 테스트 케이스에 대해 실패하였다


나중 코드

using namespace std;

long long solution(int price, int money, int count)
{

    long long answer;
    long long cost=0;
    for (int i=1; i<=count; i++){
        cost=cost+price*i;
    }
    answer=money-cost;
    if(answer<0) return -answer;
    else return 0;

}

저장되는 변수의 크기를 고려해야함을 다시 한번 알게된 문제(이미 함수 return값으로 variable type을 알 수 있었다)

code refactoring

using namespace std;

long long solution(int price, int money, int count)
{
    long long cost;
    long long answer;
    cost=(long long)price*(count+1)*count/2;
    answer=money-cost;
    return (answer<0) ? -answer:0 ;
    
}

refactoring이라고 하기에도 부끄러운 코드의 양이지만
먼저 for문을 없애서 계산의 속도를 높였고
둘째로 return 부분에서 삼항연산자를 이용해 if-else문을 간단하게 한줄로 나타내보았다.(c++ 원서에서는 오래된 programming style이라고 권하지는 않지만 연습해보았다)

좋은 웹페이지 즐겨찾기