https://www.acmicpc.net/problem/2018
* 시도1
- 누적합만들고
- 이진탐색으로 찾으면 될듯?
- 메모리초과 (1천만배열)
- 시간초과 (n log 1천만 ) == 천만 * 23 -> 23억
- o(N)에 풀어야한다.

* 풀이
- 이문제는 메모리제한이 32MB -> 1천만 배열불가능
- s,e가 index인 동시에, 값의 역할도 해야함!

- 엣지케이스 확인
- n=1 ) break문에 걸려서 잘처리됨
- 마지막 부분 해보기
- break에 걸려서 자기자신이 카운팅이 안됨 -> ret=1 로 시작

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,ret;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n;
// v.push_back(0); // 1-idx로 만들기
// for(int i=1;i<=n;++i) {
// v.push_back(i);
// }
// if(n==1) {
// cout<<1;
// return 0;
// }
// for(int i=1;i<=n;++i) {
// v.push_back(i);
// }
// s,e가 값의 역할도 하도록 개선!
ll s=1;
ll e=2; //안포
ret=1; //자기자신 기본값
ll sum=1;
while(1) {
if(e==n+1) break;
if(sum == n) {
ret++;
sum+=e;
e++;
}
else if(sum>n) {
sum-=s;
s++;
}
else {
sum+=e;
e++;
}
}
cout<<ret;
return 0;
}
'Algorithm > 투포인터' 카테고리의 다른 글
[알고리즘] 리트코드 658. k개의 가장 가까운 요소 찾기 c++ // 이진탐색, 투포인터 (0) | 2024.07.08 |
---|---|
프로그래머스 보석쇼핑 c++ //투포인터 ,슬라이딩윈도우, map,set (0) | 2024.04.25 |
백준 22988 재활용캠페인 c++ // 투포인터, /2주의사항, 투포예외처리 (0) | 2024.04.23 |
백준 16472 고냥이 c++ // 투포인터, 매개변수탐색, 투포의 핵심아이디어, set 존재여부 조사하는법 (0) | 2024.04.22 |
백준 2470 두용액 c++ // 투포인터는 st,en중 누구를 움직일지 결정하라 (0) | 2023.12.01 |