https://www.acmicpc.net/source/86922116
알고리즘의 난이도가 올라가면 더 이상 알고리즘 난이도의 문제가 아닌 아이디어의 문제임을 알려주는 대표적인 유형의 문제.
<아이디어>
별의별 생각을 다 해보며 규칙을 찾아봤는데 결국은 하나였다. 오름차순으로 만들어야 한다는 것.
오름차순으로 만들기 위해 옮겨지는 아이의 최소 수는? 이미 오름차순인 번호를 제외하고, 나머지 번호를 옮겨주면 된다.
즉, (총 학생 수 - 가장 긴 증가하는 부분 수열) 인 것이다~!
가장 긴 증가하는 부분 수열은 이전에 넘 많이 글을 올렸어서 링크로 첨부하겠당.
https://dev-zsunny.tistory.com/65
99클럽 코테 스터디 30일차 TIL DP(상자넣기)
https://www.acmicpc.net/problem/1965문제 읽으면서 든 생각. 어라..? 이거 그냥 가장 긴 증가하는 부분수열 아닝가..?https://www.acmicpc.net/problem/11053 (백준 11053 가장 긴 증가하는 부분 수열) 크기가 더 큰 상
dev-zsunny.tistory.com
https://dev-zsunny.tistory.com/62
99클럽 코테 스터디 28일차 TIL DP(가장 큰 증가하는 부분 수열)
https://www.acmicpc.net/problem/11055 어제와 비슷한 유형의 문제이다.문제에서 구해야 하는 값을 dp배열에 저장하는 값으로 설정하고, 그 규칙을 하나씩 찾아봤다.dp[0] 은 무조건 배열의 값일것이고, 그
dev-zsunny.tistory.com
https://dev-zsunny.tistory.com/61
99클럽 코테 스터디 27일차 TIL DP(가장 긴 감소하는 부분 수열)
https://www.acmicpc.net/problem/11722 1시간 동안 고민했는데 도오저히 아이디어가 안 떠올라서 힌트를 봤다 >.순서대로 탐색하면서 현재 값보다 이전 값의 크기를 비교하며 수열의 길이를 메모이제이션
dev-zsunny.tistory.com
제출 코드는 아래와 같다!
<제출코드>
package Study.Week05;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Day31_BOJ_2631_줄세우기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
for(int i=0; i<n; i++){
arr[i] = Integer.parseInt(br.readLine());
}
int[] dp = new int[n];
Arrays.fill(dp, 1);
int ans = 1;
for(int i=0; i<n; i++){
for(int j=0; j<i; j++){
if(arr[j] < arr[i]) dp[i] = Math.max(dp[i], dp[j]+1);
}
ans = Math.max(ans, dp[i]);
}
// 오름차순이 아닌 학생 수
System.out.println(n - ans);
}
}
'코테 > 백준' 카테고리의 다른 글
99클럽 코테 스터디 35일차 TIL 구현(주사위 윷놀이) (1) | 2024.12.02 |
---|---|
99클럽 코테 스터디 32일차 TIL DP(가장 긴 바이토닉 부분 수열) (1) | 2024.11.29 |
[BOJ] 12852 1로 만들기 2 (Java) (0) | 2024.11.26 |
99클럽 코테 스터디 30일차 TIL DP(상자넣기) (0) | 2024.11.26 |
99클럽 코테 스터디 29일차 TIL DP(파도반 수열) (0) | 2024.11.25 |