Algorithm
[Algo] 백준 2018 수들의 합 5 JAVA
조핑구
2024. 5. 8. 13:35
문제 바로가기 : https://www.acmicpc.net/problem/2018
메모리 : 14176KB
시간 : 164ms
언어 : Java 11
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int left = 1;
int right = 1;
int cnt = 0;
int sum = 1;
while (left <= N) {
if (sum == N) {
cnt++;
sum += ++right;
} else if (sum < N) {
sum += ++right;
} else if (sum > N) {
sum -= left++;
}
}
System.out.println(cnt);
}
}
무난한 그리디 문제. 슬라이딩 윈도우 연속된 수의 합을 구해야 하기 때문에 왼쪽 끝과 오른쪽 끝을 상정하여 하나씩 옮겨가면서 그 안의 합이 N인지 검사하면 된다.