티스토리 뷰

PS

HackerRank. New Year Chaos

tose33 2023. 10. 19. 12:35

https://www.hackerrank.com/challenges/one-week-preparation-kit-new-year-chaos/problem?isFullScreen=true&h_l=interview&playlist_slugs%5B%5D=preparation-kits&playlist_slugs%5B%5D=one-week-preparation-kit&playlist_slugs%5B%5D=one-week-day-four

 

New Year Chaos | HackerRank

Determine how many bribes took place to get a queue into its current state.

www.hackerrank.com

 

큰 숫자부터 뒤로 밀어주면 된다.

문제는 배열의 최대 크기가 십만이기 때문에, 큰 숫자를 매번 배열에서 찾는다면 시간복잡도가 최대 O(N^2) 가 된다.

따라서 pos[n] = 숫자 n 의 인덱스 를 저장해서 관리한다.

 

그  후 가장 큰 숫자 n 부터 뒤로 밀어주는데 abs(pos[n]-n]) > 2 라면 n 이 최종적으로 위치해야할 위치에서 3 칸 이상 떨어져 있기 때문에 swap 을 세번 이상해야 한다. 따라서 "Too chaotic" 을 출력한다.

 

아니라면 n 을 뒤의 숫자와 swap 해주면 되는데 이때 당연히 pos 도 업데이트 해줘야 한다.

 

 

 

 

 


 

나는 pos[] 를 만들고 큰 값 부터 뒤로 미뤘는데,

그냥 배열 q 의 앞에서부터 내 자리가 아니라면 뒤로 무조건 미루면 된다.

 

 

'PS' 카테고리의 다른 글

HackerRank. Queue using Two Stacks  (0) 2023.10.19
HackerRank. Merge two sorted linked lists  (0) 2023.10.19
HackerRank. Recursive Digit Sum  (0) 2023.10.19
백준 15787. 기차가 어둠을 헤치고 은하수를  (0) 2023.10.17
백준 21314. 민겸 수  (0) 2023.10.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함