개인사
[S2] 백준 24523번 내 뒤에 나와 다른 수 C++ 투 포인터 본문
728x90

리뷰

https://www.acmicpc.net/problem/24523
실버 2치고는 초기 설계 단계가 많이 복잡한 것 같다.
전역 변수
없음
함수
없음
문제풀이
- 변수 n을 초기화 하고, n에 값을 입력 받는다.
- 정수형 벡터 arr을 n+1크기로 초기화 하고, n개의 원소를 입력 받아 arr를 초기화한다.
- 정수형 벡터 ans를 n+1크기로, 초기값을 -1로 초기화 하고, 변수 l을 1로 저장한다.
- l이 n미만일 경우를 조건으로 하는 while루프를 수행하고, 변수 r을 l+1로 저장한다.
- r이 n이하면서 arr[l]이 arr[r]과 같다면 r을 증가시키는 while루프를 수행한다.
- while루프를 빠져나온 후 r값이 n보다 크다면 break처리한다.
- l이 r에 도달할때까지 l을 증가시키며 ans[l]의 값을 r로 저장한다.
- 탐색을 마친 후 ans에 저장된 값을 공백을 기준으로 출력한다.
트러블 슈팅
없음
참고 사항
- 1-based-indexing을 사용했으므로 0번 인덱스를 사용하지 않도록 유의한다.
- ans의 값을 출력할때도 foreach가 아닌 for문으로 인덱스를 지정하여 출력한다.
정답 코드
#include<iostream>
#include<vector>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
vector<int> arr(n + 1);
for (int i = 1; i <= n; ++i) cin >> arr[i];
vector<int> ans(n + 1, -1);
int l = 1;
while (l < n) {
int r = l + 1;
while (r <= n && arr[l] == arr[r]) ++r;
if (r > n) break;
while (l < r) ans[l++] = r;
}
for (int i = 1; i <= n; ++i) cout << ans[i] << " ";
}728x90
'알고리즘 공부 > C++' 카테고리의 다른 글
| [P3] 백준 2873번 롤러코스터 C++ 구현, 그리디 알고리즘, 홀짝성, 해 구성하기 (1) | 2026.01.12 |
|---|---|
| [G5] 백준 34558번 Prime Median C++ 에라토스테네스의 체, 누적 합, 이분 탐색 (0) | 2026.01.11 |
| [S1] 백준 23758번 중앙값 제거 C++ 정렬, 그리디 알고리즘 (0) | 2026.01.08 |
| [S2] 백준 26071번 오락실에 간 총총이 C++ 애드혹 (0) | 2026.01.07 |
| [G4] 백준 20046번 Road Reconstruction C++ 최단 경로, 다익스트라 (0) | 2026.01.06 |
