반응형
문제분석:
매우 간단한문제였다. price*count 증가 수 마다 더해준뒤 money를 뺀값을 반환하면된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
class Solution {
public long solution(int price, int money, int count) {
long answer = -1;
long sum=0;
for(int i=count;i>0;i--){
sum+=i*price;
}
if(sum<=money) {
return 0;
}
return answer=sum-money;
}
}
|
cs |
주의해야할점: 범위가 매우클때 price*count수만큼 곱하다보면, 매우큰 숫자가 나와 int형을벗어나게된다.
처음에 int sum=0; 설정했다가, 테케 5개정도가 오류가 났었다. int형이 벗어날것같다면
long sum=0; 을 설정하자.
1
2
3
4
5
|
class Solution {
public long solution(long price, long money, long count) {
return Math.max(price * (count * (count + 1) / 2) - money, 0);
}
}
|
cs |
다른사람의 풀이중에 눈길을 사로잡은 풀이가 있었다.
바로 등차수열의 원리를 사용한 n*(n+1)/2{연속된 숫자 n의합} 공식을 쓴 풀이다.
필자는 문제를보고 1.여러번반복해서 더해야겟내? -> 2. 반복문써야겟다 라고 생각햇지만
이분은 일정한 규칙을보고 바로 등차수열공식을 대입해 연산속도를 줄엿다.
이런건 반드시 배워야하는 스마트한 코딩이라고 생각한다.
반응형
'알고리즘 > 프로그래머스 Level1' 카테고리의 다른 글
[프로그래머스,java] Level1: 체육복 (2021년 7월 28일 업데이트버전) (3) | 2021.08.06 |
---|---|
[프로그래머스,Java] Level1: K번째수 (0) | 2021.08.06 |
[프로그래머스,Java] Level1 : 완주하지 못한 선수 (0) | 2021.08.04 |
[프로그래머스,Java] Level1 : 폰켓몬 (0) | 2021.08.04 |
[프로그래머스,Java] Level1 신규 아이디 추천 (0) | 2021.08.03 |