본문 바로가기
Memo/코테

부족한 금액 계산하기

by 연로그 2021. 9. 16.
반응형

프로그래머스 위클리 챌린지 1주차 문제

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

 

코딩테스트 연습 - 1주차_부족한 금액 계산하기

새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이

programmers.co.kr


문제 설명

새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.


제한사항

놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수


나의 풀이

class Solution {
    public long solution(long price, long money, int count) {
        long answer = price * getTotalCount(count) - money;
        if(answer < 0) return 0;
        return answer;
    }
    
    public int getTotalCount (int count) {
        int totalCnt = 0;
        for(int i=1; i<=count; i++) {
            totalCnt += i;
        } return totalCnt;
    }
}

 

간단한 문제라서 개선사항이 없을줄 알았는데..

쉽다고 후다닥 풀었는데 개선점이 많았다. 메모용으로 포스팅.

 

1. int와 long의 차이점을 인지할 것

2. 적절하지 않은 메소드명 (totalCount라고 부르기는 힘들다.)

3. 불필요한 for문 줄이기

 

개선 코드

class Solution {
    public long solution(long price, long money, int count) {
        long answer = price * sumOneToNum(count) - money;
        if(answer < 0) return 0;
        return answer;
    }
    
    public int sumOneToNum (int number) {
        return number*(number+1)/2;
    }
}

아직도 적절한 메소드명인지는 의문이지만.. 적어도 getTotalCount보단 나은 이름이라고 생각한다.

반응형

'Memo > 코테' 카테고리의 다른 글

백준 - 빗물 (JAVA)  (0) 2021.10.01
없는 숫자 더하기  (0) 2021.09.16
프린터  (0) 2021.06.22
방문 길이  (0) 2021.06.16
[Kakao] 신규 아이디 추천  (0) 2021.05.26