728x90
내가 쓴 풀이
class Solution {
public long solution(int price, int money, int count) {
long a = 0;
long answer = 0;
for (int i = 1; i <= count; i++) {
a += i * price;
}
if(a > money){
answer = a - money;
}
return answer;
}
}
뭔가 좀 더 간결하게 할 수 있을거 같은데....
수정한 결과
class Solution {
public long solution(int price, int money, int count) {
long num = 0;
for(int i = 1; i <= count; i++){
num += price * i;
}
return num - money < 0 ? 0 : num - money;
}
}
처음에는 리턴타입이 long인데 a변수를 int로 선언해서 엉청난 삽질을 했다... 앞으로 이런 실수는 없을거다......
ㄹㅇ킹받드라슈
그리고 또 하나
아래 코드는 같이 페어로 알고리즘 문제를 푸시는 분이 오류가난다고 하셔서 왜 오류인지 분석을 해보았다....
문제에서 조건이 있는데
위에 문제에서 제한사항을 참조하자
보면 price, money, count는 int로 받아왔다.
아래 for 문을 보면 price 곱하기 i 가있는데 i는 카운트 값만큼 반복한다.
근데 여기서 price 곱하기 i 가 언제 가는 값이 커지다 못해 int 범위를 초과해버린다.
그 초과한 값을 money에 더하려고 하니 오류가 났던 것이었다... 오늘 하나 배워간다 이렇게 타입 하나하나 섬세하게 고려해야겠다는 걸 한 번 더 나의 머리에 상기시켰다.
class Solution {
public long solution(int price, int money, int count) {
long answer = -1;
for(int i=1; i<=count; i++){
money -= price * i;
}
answer = (money < 0)? (long)money * (-1):0;
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
이상한 문자 만들기 (0) | 2023.06.20 |
---|---|
완주하지 못한 선수 ver_1 (0) | 2023.06.20 |
내적 (0) | 2023.06.16 |
나누어 떨어지는 숫자 배열 (0) | 2023.06.16 |
부분 문자열 인지 확인하기 (0) | 2023.06.07 |