1. 문제 설명
2. 나의 풀이
public long solution(int price, int money, int count) {
long tempSum = 0;
for (int i = 1; i <= count; i++) {
tempSum += price * i;
}
long result = tempSum - money;
return Math.max(result, 0);
}
이렇게 풀고 잘풀었다고 박수치고 있었는데
3. 다른 사람의 풀이
public long solution(long price, long money, long count) {
return Math.max(price * (count * (count + 1) / 2) - money, 0);
}
등차수열의 합을 이용해서 시간복잡도를 O(n) => O(1)로 확 줄인 코드를 발견함..
다음에 비슷한 문제 나오면 등차수열로 풀어야겠다
'코테 > java' 카테고리의 다른 글
[프로그래머스][java] lv 1 월간 코드 챌린지 시즌1 3진법 뒤집기 (1) | 2025.01.15 |
---|---|
[프로그래머스][java] lv1 이상한 문자 만들기 (0) | 2025.01.10 |
lv 1 정수 내림차순으로 배치하기 (2) | 2024.12.20 |
[프로그래머스][java] lv 0 중복된 문자 제거 (0) | 2024.12.02 |
[프로그래머스][java] lv 0 문자열 정렬하기 (1) (0) | 2024.11.28 |