본문 바로가기

Algorithm/BAEKJOON

[BOJ] 24523번 내 뒤에 나와 다른 수 (C++)

728x90
반응형

https://www.acmicpc.net/problem/24523

 

24523번: 내 뒤에 나와 다른 수

첫째 줄에 수열 $A$의 크기 $N$이 주어진다. 둘째 줄에는 $A_1 \ A_2 \ \cdots \ A_N$이 공백으로 구분되어 주어진다. $(1 \le N \le 10^6$, $-10^9 \le A_i \le 10^9 )$ 입력으로 주어지는 모든 수는 정수이다.

www.acmicpc.net

 

#include <iostream>
#include <stack>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
	int n, num;
	vector<pair<int, int>> v;
	stack<pair<int, int>> s;
	vector<int> res;

	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> num;
		v.push_back({ i + 1, num });
	}

	for (int i = v.size() - 1; i >= 0; i--) {
		if (s.empty()) res.push_back(-1);
		else {
			if(v[i].second == s.top().second) s.pop();
			if(!s.empty()) res.push_back(s.top().first);
			else res.push_back(-1);
		}
		s.push({ v[i].first, v[i].second });
	}

	for (int i = res.size() - 1; i >= 0; i--) {
		cout << res[i] << " ";
	}

	return 0;
}
728x90
반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[BOJ] 17298번 오큰수 (C++)  (0) 2022.03.05
[BOJ] 20126번 교수님의 기말고사 (C++)  (0) 2022.03.04
[BOJ] 2493번 탑 (C++)  (0) 2022.03.03
[BOJ] 15988번 1, 2, 3 더하기 3 (C++)  (0) 2022.02.25
[BOJ] 10868번 최솟값 (C++)  (0) 2022.02.22