개발하는 고양이 오이

4. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 부족한 금액 계산하기 / 18-22번 실패 해결 / 다른 사람의 풀이° 본문

코딩테스트 - JAVA/프로그래머스 Programmers

4. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 부족한 금액 계산하기 / 18-22번 실패 해결 / 다른 사람의 풀이°

Cucum 2022. 4. 25. 11:45

 

 

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

프로그래머스 코딩테스트 연습 Level.1 - 부족한 금액 계산하기


 

 


풀이

class Solution {
    public long solution(int price, int money, int count) {
        long answer = -1;

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

 


(풀이 실패 과정)

class Solution {
    public long solution(int price, int money, int count) {
        long answer = -1;

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

처음에 변수 result를 long 형이 아닌 int형으로 풀었더니 테스트 18번부터 22번까지 실패

 

이유에 대해 찾아보니 int형의 범위가 제한되어있는데 int형의 곱을 반복하다보면 int의 범위를 넘어서게 되기 때문에 이때 이상한 결과값으로 인해 '실패'가 뜬것 이었습니다.

 

그래서 answer과 동일한 형인 long으로 바꿔서 풀었더니 통과.

 


다른 사람의 풀이

Math.max를 이용해서 한줄로 표현 가능

감사합니다.