티스토리 뷰
거꾸로 생각하면 쉽게 풀 수 있다
시프트게 전체가 되므로 그냥 시작점을 옮겨보면 된다
시작점을 기준으로 k칸 뒤에 값을 더해주면 되고
오른쪽 왼쪽 시프트를 할때는 시작점을 움직여보자!
소스코드
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
|
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
int n,q,s;
ll arr[200020];
int main(){
cin>>n>>q;
for(int i=0;i<n;i++) cin>>arr[i];
for(int i=0;i<q;i++){
int x; cin>>x;
int a,b;
if(x==1){
cin>>a>>b; a--;
arr[(s+a)%n]+=b;
} else if(x==2){
cin>>a;
s = (s+n-a)%n;
} else {
cin>>a;
s = (s+a)%n;
}
}
for(int i=0;i<n;i++) printf("%d ",arr[(s+i)%n]); puts("");
}
|
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 17505 링고와 순열 (0) | 2019.11.08 |
---|---|
[백준] 17503 맥주 축제 (0) | 2019.11.08 |
[백준] 17498 폴짝 게임 (0) | 2019.11.08 |
[백준] 17497 계산기 (0) | 2019.11.08 |
[백준] 16438 원숭이 스포츠 (0) | 2019.09.20 |
댓글