Today's special moments become memories of tomorrow.

BOJ

[백준 11497번] 통나무 건너뛰기 (java)

lotus lee 2021. 3. 4. 10:49

 

11497번: 통나무 건너뛰기

남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이

www.acmicpc.net

 

통나무를 선형으로 배열하는 것이 아니라 원형으로 배열하기 때문에 처음과 끝이 만난다.

그러므로 통나무를 단순히 오름차순, 혹은 내림차순으로 정렬하면 최소 난이도를 구할 수 없다.

 

예를 들어 오름차순으로 정렬하면 가장 왼쪽에는 최소값, 가장 오른쪽에는 최대값이 배치되는데, 원형이기 때문에 둘 사이의 차이도 난이도에 포함된다. 최대값에서 최소값을 뺀 값은 가장 큰 차가 되므로 최소 난이도를 구할 수 없다.

 

그래서 최소 난이도를 구하기 위해서는 중간에 위치한 통나무의 길이가 가장 크고 가장자리로 갈수록 작아지는 형태로 정렬을 해야 한다.

 

일단 입력받은 통나무 길이를 우선순위 큐에 넣고, 큰 값부터 꺼낸다.

새로운 배열에 가운데 위치부터 시작해서 점점 양옆으로 위치를 옮겨가며 큰수에서 작은수 차례대로 배열에 담는다. 

그 다음 인접한 통나무끼리의 길이 차이를 구하고 가장 최대값이 최소 난이도가 된다.

 

소스코드 : 

 

'BOJ' 카테고리의 다른 글

[백준 11399번] ATM (java)  (0) 2021.03.04
[백준 1931번] 회의실 배정 (java)  (0) 2021.03.04
[백준 2234번] 성곽 (java)  (0) 2021.03.04
[백준 9375번] 패션왕 신해빈 (java)  (0) 2021.03.03
[백준 2467번] 용액 (java)  (0) 2021.03.03