반응형
문제
https://www.acmicpc.net/problem/2346
풀이
pair와 vector를 이용해서 입력 값을 저장한다. pair에 인덱스와 움직일 숫자를 넣어서 vector에 저장을 한다. 그 다음 부터는 vector에 맨 앞에 저장되어 있는 값을 출력하고 바꿔주면 된다. 움직일 숫자가 양수이면 vector의 앞에 있는 값을 뒤로 보내주고, 음수면 vector의 뒤에 있는 값을 앞에 넣어준다.
1. vector의 front 값의 인덱스를 출력 후 삭제
2. front 값의 움직일 수가 양수이면 (움직일 수 - 1)만큼 다음 front 값들을 뒤로 보냄
3. front 값의 움직일 수가 음수이면 그 수만큼 back 값들을 앞으로 보냄
4. vector가 빌 때까지 1, 2, 3 반복
코드
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
|
#include <iostream>
#include <vector>
using namespace std;
int N;
vector<pair<int ,int>> v;
int main()
{
cin.tie(0);
ios::sync_with_stdio(0);
cin >> N;
for (int i=1, t; i<=N; i++)
{
cin >> t;
v.push_back({i, t});
}
while (!v.empty())
{
cout << v.front().first << ' ';
int move = v.front().second;
v.erase(v.begin());
if (move > 0)
{
for (int i=0; i<move-1; i++)
{
v.push_back(v.front());
v.erase(v.begin());
}
}
else
{
for (int i=0; i<-move; i++)
{
v.insert(v.begin(), v.back());
v.pop_back();
}
}
}
return 0;
}
|
cs |
반응형
'BOJ' 카테고리의 다른 글
백준 2004 - 조합 0의 개수 (0) | 2020.02.18 |
---|---|
백준 6588 - 골드바흐의 추측 (0) | 2020.02.12 |
백준 1753 - 최단경로 (1) | 2020.01.10 |
백준 1197 - 최소 스패닝 트리 (0) | 2019.12.26 |
백준 1167 - 트리의 지름 (0) | 2019.11.15 |