class Solution {
public int solution(int n) {
int[] sum = new int[n + 1];
for (int i = 1; i < sum.length; i++) {
sum[i] = sum[i - 1] + i;
}
int count = 0;
int start = 0;
for (int i = 1; i < sum.length; i++) {
int tmp = sum[i] - sum[start];
if (tmp == n) {
count++;
start++;
i = start;
} else if (tmp > n) {
start++;
i = start;
}
}
return count;
}
}
* 효율성 테스트 실패 코드
class Solution {
public int solution(int n) {
int[] arr = new int[n + 1];
for (int i = 1; i < arr.length; i++) {
arr[i] = i;
}
int[] sum = new int[arr.length];
for (int i = 1; i < sum.length; i++) {
sum[i] = sum[i - 1] + arr[i];
}
int count = 0;
for (int i = sum.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (sum[i] - sum[j] == n) count++;
}
}
return count;
}
}
arr 배열은 굳이 생성할 필요가 없고, if문 조건식에 맞는 경우 배열 순환의 단계를 뛰어넘어야 한다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스/MySQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2023.10.06 |
---|---|
[프로그래머스/MySQL] 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2023.10.06 |
[프로그래머스/자바] 이진 변환 반복하기 (0) | 2023.10.04 |
[프로그래머스/자바] 올바른 괄호 (0) | 2023.10.04 |
[프로그래머스/MySQL] 입양 시각 구하기(1) (0) | 2023.10.01 |