24523번 : 내 뒤에 나와 다른 수
문제)
길이가 인 수열 1 2 ⋯ 이 주어진다. 1 ≤ i ≤ 인 정수 마다 이고 A_i ≠ A_j인 정수 중 최솟값을 출력하라. 만약 이러한 가 없다면 −1을 출력하라.
입력 :
첫째 줄에 수열 의 크기 이 주어진다. 둘째 줄에는 1 2 ⋯ 이 공백으로 구분되어 주어진다.
(1≤ N ≤10^6, −10^9≤ A_i ≤10^9) 입력으로 주어지는 모든 수는 정수이다.
출력 :
각 마다 조건을 만족하는 최솟값 를 출력하라. 만약 이러한 가 없다면 −1을 출력하라.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
// 24523. 내 뒤에 나와 다른 수
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int n;
vector<long long> vec;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
vec.resize(n);
for (long long& ele : vec) cin >> ele;
long long cur = vec[n - 1];
int prev = -1;
stack<int> s;
for (int i = n - 1; i > -1; i--)
{
if (vec[i] == cur)
{
s.push(prev);
}
else
{
s.push(i + 2);
prev = i + 2;
cur = vec[i];
}
}
while (!s.empty())
{
cout << s.top() << " ";
s.pop();
}
return 0;
}
|
cs |
출처 : 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
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 27172번 : 수 나누기 게임 (C++) (0) | 2024.02.08 |
---|---|
[백준] 2866번 : 문자열 잘라내기 (C++) (0) | 2024.02.08 |
[백준] 12991번 : 홍준이의 행렬 (C++) (0) | 2024.02.07 |
[백준] 2512번 : 예산 (C++) (0) | 2024.02.07 |
[백준] 8983번 : 사냥꾼 (C++) (0) | 2024.02.05 |