📌 문제
https://programmers.co.kr/learn/courses/30/lessons/82612
📌 풀이
- int로 로직을 구현하고 보니 일부 Edge Case에 걸려서 고민 끝에 다른 사람의 풀이를 참고하여 풀었다.
- (price의 최댓값은 2500, count의 최댓값 2500이다. 두 최댓값을 넣고 진행하면 int의 최대 범위를 넘어 오버플로우가 발생한다.)
- sum변수에 대입하기 전에 long타입으로 형 변환을 해주었다.
📌 코드
package programmers;
public class Pro_220521 { // 부족한 금액 계산하기
public static long solution(int price, int money, int count) {
long answer = 0;
long sum = 0;
for (int i = 1; i <= count; i++) {
sum += (long) price * i; // sum += 3*1 + 3*2 + 3*3 + 3*4 long으로 형변환
}
if (sum > money){ // sum > money 보다 크면 그 뺀 값 리턴
answer = sum - money;
}
return answer; // 그렇지 않으면 0을 리턴
}
public static void main(String[] args) {
// 도움 코드
int price = 3;
int money = 20;
int count = 4;
System.out.println(solution(price, money, count));
}
}
'Programmers' 카테고리의 다른 글
[Java] 프로그래머스 : 예산 (0) | 2022.05.27 |
---|---|
[Java] 프로그래머스 : 최소직사각형 (0) | 2022.05.23 |
[Java] 프로그래머스 : 같은 숫자는 싫어 (0) | 2022.05.18 |
[Java] 프로그래머스 : 문자열 내 마음대로 정렬하기 (0) | 2022.05.13 |
[Java] 프로그래머스 : 문자열 내림차순으로 배치하기 (0) | 2022.05.12 |