티스토리 뷰

알고리즘/(깨짐)

BOJ)2505 두 번 뒤집기

광그로 2017. 3. 11. 18:07

문제 : https://www.acmicpc.net/problem/2505



ㄱ.arr배열에서 i번째의 위치에 있어야할 value는 i이다. (1<= i <= 10000)

 [1]

[2] 

[3] 

[4] 

[5] 

[6] 

[7] 

[8] 

[9] 

[10] 

 6

10 

 start

 

 

 

finish 

 

 

 

 

 


만약 ㄱ.조건에 맞지않는 곳[1]이 있다면
, 그 위치 [1]를 start, 그 위치에 원래 들어가야할 value(1)가 위치한 곳[3]을 finish라 본다.

start~finish까지 뒤집기를 실시하여 준 후, ㄱ. 조건에 합당한지 조사한다.

이 과정은 [1]에서 부터 순차적으로 실시되며, 2번의 뒤집기 내에 전부 실시된다.

 [1]

[2] 

[3] 

[4] 

[5] 

[6] 

[7] 

[8] 

[9] 

[10] 

1

2

6

7

10 


 

  start

 


 

 

finish  

 

 



 [1]

[2] 

[3] 

[4] 

[5] 

[6] 

[7] 

[8] 

[9] 

[10] 

1

2

3

 4

10


 

     


 

 

만약 순차적으로 진행하였음에도 나오지 않을 경우, 역으로 뒤에서 부터 실시하여본다.


또한, 이 문제는 예외 처리를 잘해주어야 한다.

1. 뒤집기가 0번 일어나는 경우 

input

10

1 2 3 4 5 6 7 8 9 10 

output

1 1

1 1

2. 뒤집기가 1번 일어나는 경우

input

10

1 2 3 6 5 4 7 8 9 10

output

1 1 

4 6

3. 뒤집기가 2번 일어나는 경우

input

10

6 7 8 2 1 5 4 3 9 10

output

1 5

3 8


아마 1, 2번의 경우를 제외하고 코딩하면 76% 정도에서 틀렸다는 문구가 뜨게 될 것이다.

1번과 2번 경우를 추가하지 않아 꽤 오래 헤맸다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함