알고리즘 공부

[백준 2631번] 줄세우기- java

철매존 2022. 4. 6. 11:22
728x90

문제 설명

1. N개의 학생이 있다.

2. 학생들을 키순서대로 세워야 한다.

3. 키순서로 세우기 위해 이동시켜야 하는 학생의 최소 숫자를 구하면 된다.

 

풀이 과정

 1. DP를 통해서 진행한다.  '가장 긴 증가하는 부분 수열' 문제의 알고리즘을 적용해야 한다. 이전 문제를 풀어봤으면 사실 그 하위호환 문제이다. 근데왜 같은 골5...?

 2. 옮길 학생이 아니라, 움직이지 않을 학생수를 구하자! 예를 들어 여기 문제처럼

3 7 5 2 6 1 4

를 보면

가장 긴 증가하는 부분 수열로 구하면 3 - 5 - 6 이렇게 학생들을 보면 얘네가 가장 긴 증가하는 부분 수열이고, 움직이지 않을 최대 숫자이다.

 3. 그럼 이제 나머지 애들을 움직여주면 된다.

코드

'알고리즘 공부' 카테고리의 다른 글

[백준 13164번] 행복 유치원- java  (0) 2022.04.09
[백준 5557번] 1학년 - java  (0) 2022.04.07
[백준 2565번] 전깃줄- java  (0) 2022.04.06
[백준 23352번] 방탈출 - java  (0) 2022.04.05
[백준 1461번] 도서관 - java  (0) 2022.03.29