https://www.acmicpc.net/problem/2018
아이디어:
1. N이라는 선형 연속된 숫자 스트림을 가리키는 시작 인덱스, 종료 인덱스 두 가지
2. 시작지점은 둘 다 1을 가리키며, 합은 1
3. 합이 N보다 작으면 종료 인덱스 다음으로
4. 합이 N보다 크면 시작 인덱스 다음으로
5. 같으면 answer 1 추가, 종료 인덱스 다음으로
6. N 자체도 카운트
// 2018
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, start_index, end_index, sum, answer;
start_index = 1;
end_index = 1;
sum = 1;
answer = 0;
cin >> N;
while (end_index != N) {
if (sum < N) {
end_index++;
sum += end_index;
}
else if (sum > N) {
sum -= start_index;
start_index++;
}
else if (sum == N) {
end_index++;
sum += end_index;
answer++;
}
}
cout << answer + 1; // N its own
return 0;
}
'algorithm' 카테고리의 다른 글
백준 1253번 좋다 (0) | 2024.12.02 |
---|---|
백준 1940번 주몽 (0) | 2024.12.01 |
백준 10986번 나머지 합 (0) | 2024.11.24 |
백준 11660번 구간 합 구하기 5 (0) | 2024.11.24 |
백준 11659번 구간 합 구하기 (0) | 2024.11.17 |