일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카카오
- 신문 스크랩
- 인앱결제
- 신문스크랩
- it 이슈
- KT
- 프로그래머스
- SSAFYcial
- 백준위
- 코딩테스트 연습
- Java
- python
- IT 트렌드
- 구글
- java 객체지향 프로그래밍
- it 뉴스
- SSAFY
- 네트워크 관리사 2급 실기
- 코테
- html
- 싸피셜
- 리얼클래스
- 코딩테스트
- IT 동향
- 네트워크 관리사 2급
- SSAFY 7기
- 백준
- 네트워크 관리사
- 우테코
- 싸피
- Today
- Total
개발자일걸요..?
10812번 바구니 순서 바꾸기 본문
링크 : https://www.acmicpc.net/problem/10812
10812번: 바구니 순서 바꾸기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2
www.acmicpc.net
문제
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2번째 바구니, ..., 가장 오른쪽 바구니를 N번째 바구니라고 부른다.
도현이는 앞으로 M번 바구니의 순서를 회전시키려고 만들려고 한다. 도현이는 바구니의 순서를 회전시킬 때, 순서를 회전시킬 범위를 정하고, 그 범위 안에서 기준이 될 바구니를 선택한다. 도현이가 선택한 바구니의 범위가 begin, end이고, 기준이 되는 바구니를 mid라고 했을 때, begin, begin+1, ..., mid-1, mid, mid+1, ..., end-1, end 순서로 되어있는 바구니의 순서를 mid, mid+1, ..., end-1, end, begin, begin+1, ..., mid-1로 바꾸게 된다.
바구니의 순서를 어떻게 회전시킬지 주어졌을 때, M번 바구니의 순서를 회전시킨 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.
둘째 줄부터 M개의 줄에는 바구니의 순서를 바꾸는 만드는 방법이 주어진다. 방법은 i, j, k로 나타내고, 왼쪽으로부터 i번째 바구니부터 j번째 바구니의 순서를 회전시키는데, 그 때 기준 바구니는 k번째 바구니라는 뜻이다. (1 ≤ i ≤ k ≤ j ≤ N)
도현이는 입력으로 주어진 순서대로 바구니의 순서를 회전시킨다.
출력
모든 순서를 회전시킨 다음에, 가장 왼쪽에 있는 바구니부터 바구니에 적혀있는 순서를 공백으로 구분해 출력한다.
예제 입력 1
10 5
1 6 4
3 9 8
2 10 5
1 3 3
2 6 2
예제 출력 1
1 4 6 2 3 7 10 5 8 9
시뮬레이션 알고리즘 이용
-> n개의 바구니가 있다고 가정하여 배열을 생성한 뒤, m번만큼 바구니 순서를 차례로 직접 바꿔보고 출력해보면 된다.
예제를 통해 직접 확인
n = 10 m= 5
m=1일 때, begin=1 end=6 mid=4
전 | 1(begin) | 2 | 3 | 4(mid) | 5 | 6(end) | 7 | 8 | 9 | 10 |
후 | 4 | 5 | 6 | 1 | 2 | 3 | 7 | 8 | 9 | 10 |
m=2일 때, begin=3 end=9 mid=8
전 | 4 | 5 | 6(begin) | 1 | 2 | 3 | 7 | 8(mid) | 9(end) | 10 |
후 | 4 | 5 | 8 | 9 | 6 | 1 | 2 | 3 | 7 | 10 |
m=3일 때, begin=2 end=10 mid=5
전 | 4 | 5(begin) | 8 | 9 | 6(mid) | 1 | 2 | 3 | 7 | 10(end) |
후 | 4 | 6 | 1 | 2 | 3 | 7 | 10 | 5 | 8 | 9 |
m=4일 때, begin=1 end=3 mid=3
전 | 4(begin) | 6 | 1(mid,end) | 2 | 3 | 7 | 10 | 5 | 8 | 9 |
후 | 1 | 4 | 6 | 2 | 3 | 7 | 10 | 5 | 8 | 9 |
m=5일 때, begin=2 end=6 mid=2
전 | 1 | 4(begin,mid) | 6 | 2 | 3 | 7(end) | 10 | 5 | 8 | 9 |
후 | 1 | 4 | 6 | 2 | 3 | 7 | 10 | 5 | 8 | 9 |
출력
1 4 6 2 3 7 10 5 8 9
작성한 코드
n,m = list(map(int, input().split(' ')))
bascket = [i for i in range(1,n+1)]
for i in range(0,m):
begin, end, mid = list(map(int,input().split(' ')))
begin, end, mid = begin-1, end-1, mid-1
temp = bascket[mid:end+1]+bascket[begin:mid]
bascket = bascket[:begin]+temp+bascket[end+1:]
for b in bascket:
print(b,end=' ')
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
13698번 Hawk eyes (0) | 2021.11.04 |
---|---|
4084번 Viva la Diferencia (0) | 2021.11.04 |
18870번 좌표 압축 (0) | 2021.04.06 |
11444번 피보나치 수 6 (0) | 2021.04.03 |
10830번 행렬 제곱 (0) | 2021.04.02 |