이동식 저장소

27979. 볼링장 아르바이트 본문

Problem Solving/BOJ

27979. 볼링장 아르바이트

해스끼 2023. 4. 29. 22:22

친구가 학교 대회에서 낸 문제이다. 

 

27979번: 볼링장 아르바이트

건구스는 볼링장에서 아르바이트하고 있다. 건구스의 퇴근 전 마지막 업무는 N개의 볼링공의 순서를 볼링공의 무게 순서대로 정리하는 것이다. 즉, 모든 i,j (1i<jN) 에 대해 $w_i \le w

www.acmicpc.net


공을 뺄 때는 어디에서나 뺄 수 있지만, 넣을 때는 맨 앞에만 넣을 수 있다. 주어진 정수를 오름차순으로 정렬하려면 공을 최소 몇 번 빼야 하는지 구하면 된다.

 

어디선가 많이 본 세팅인데.. LIS 문제인가 싶어서 생각해 봤으나 아니었다. 정렬 말고는 딱히 알고리즘은 없는 듯하다.

 

예제를 관찰한 결과, i번 공 앞에 i번 공보다 큰 공 j가 있다면

  1. i번 공과
  2. k<i이면서 w[k]<w[i]인 공 (i보다 앞에 있으면서 i번 공보다 가벼운 공 k)

을 모두 움직여야 한다. j<i이고 w[j]>w[i](i, j) 쌍이 존재한다면 i번 공을 앞으로 옮겨야 한다. 그런데 i번 공을 앞으로 옮기면 k<i이고 w[k]<w[i]k번 공(i보다 앞에 있으면서 i번 공보다 가벼운 공) 역시 앞으로 옮겨야 한다. i번 공이 움직임에 따라 정렬이 깨졌기 때문이다.

 

위 조건을 만족하는 인덱스의 개수를 세면 된다. 의외로 구현이 까다로우니 주의.


될 듯 말 듯 해서 2시간 썼는데.. 이런 걸 30분 안에 풀어야 하는데. 쩝.

'Problem Solving > BOJ' 카테고리의 다른 글

2094. 강수량  (0) 2023.06.14
14922. 부분평균  (0) 2023.05.02
12996. Acka  (0) 2023.04.14
1572. 중앙값  (1) 2023.04.10
1615. 교차개수세기  (0) 2023.03.30
Comments