Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

LoCeL

[BOJ 2759] 팬케익 뒤집기 본문

PS

[BOJ 2759] 팬케익 뒤집기

LoCeL 2021. 6. 27. 04:00

문제

 

2759번: 팬케익 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 숫자 여러개가 공백으로 구분되어있다. 첫 번째 숫자는 팬케익의 개수 N이고, 그 다음 N개의 숫자는 팬케익의 크기이다. 가장

www.acmicpc.net


꽤 재미있는 문제였다.

 

문제에서 명시해둔 최대로 뒤집을 수 있는 횟수인 $2n-3$이 핵심이다.

팬케익의 숫자는 $1$부터 $n$까지 있다. 당연하게도, 정렬되어있을때, 크기 $i$인 팬케익은 $i$번째 위치에 있을 것이다.

크기 $i$인 팬케익을 $i$번째 위치로 보내는 가장 나이브한 풀이를 생각해보자. 

  1. 크기 $i$인 팬케익의 위치를 $p$라고 하자.
  2. $p$위치에서 팬케익을 뒤집는다. 이때 크기 $i$인 팬케익은 첫번째 위치로 갈 것이다.
  3. 그리고 $i$에서 다시 팬케익을 뒤집는다.
  4. 그러면 크기 $i$인 팬케익이 $i$번째 위치로 옮겨진다.
  5. 이를 크기 $n$인 팬케익부터 크기 $1$의 팬케익까지 차례대로 반복한다.

위의 풀이를 이용하면 $2n-3$번 이내로 팬케익을 뒤집어서 정렬할 수 있다. 그 증명은 아래와 같다.

  • $i == 2$ 인 경우, 펜케익이 첫번째 위치에 있다면 한번만 뒤집으면 위치로 보낼 수 있고, 두번째 위치에 있다면 뒤집을 필요가 없다. ($-1$ ~ $-2$)
  • $i == 2$까지 모두 뒤집은 경우, 맨 마지막 숫자인 $i == 1$은 첫번째 위치밖에 갈 수 없기 때문에, 뒤집을 필요가 없다. ($-2$)
  • $i > 2$ 인 경우에는 항상 2번 뒤집어야한다.

따라서 최대 $2 \times (n-2) + 1 = 2n-3$번 뒤집어서 정렬할 수 있다.

 

'PS' 카테고리의 다른 글

(06/20 ~ 06/26) 랜덤 골드 디펜스  (0) 2022.06.25
[BOJ 7570] 줄 세우기  (0) 2021.10.24
[BOJ 12865] 평범한 배낭  (0) 2020.08.13
[BOJ 11727] 2 x n 타일링 2  (0) 2020.08.05
[BOJ 11724] 연결 요소의 개수  (0) 2020.08.05
Comments