๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 18353_๋ณ‘์‚ฌ ๋ฐฐ์น˜ํ•˜๊ธฐ

๋ฟŒ์•ผ._. 2026. 1. 29. 11:53
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/18353)

< ๋ณ‘์‚ฌ ๋ฐฐ์น˜ํ•˜๊ธฐ >

 

๋ฌธ์ œ ํ’€์ด 

 

dp๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‚จ์•„์žˆ๋Š” ๋ณ‘์‚ฌ์˜ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ๊ตฌํ•œ๋‹ค.

 

my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class _18353_ { // ๋ณ‘์‚ฌ ๋ฐฐ์น˜ํ•˜๊ธฐ

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		int arr[] = new int[n];
		int dp[] = new int[n];

		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
			dp[i] = 1;
		}

		for (int i = 1; i < n; i++) {
			for (int j = 0; j < i; j++) {
				if (arr[j] > arr[i]) {
					dp[i] = Math.max(dp[i], dp[j] + 1);
				}
			}
		}

		int max = 0;
		for (int i = 0; i < n; i++) {
			max = Math.max(max, dp[i]);
		}

		System.out.println(n - max);

	}
}
๋ณ€์ˆ˜)
n : ๋ณ‘์‚ฌ ์ˆ˜
arr : ๋ณ‘์‚ฌ์˜ ์ „ํˆฌ๋ ฅ
dp : ๋‚จ์•„์žˆ๋Š” ๋ณ‘์‚ฌ์˜ ์ˆ˜
max : ๋‚จ์•„์žˆ๋Š” ๋ณ‘์‚ฌ์˜ ์ตœ๋Œ€ ์ˆ˜

 

๋ณ‘์‚ฌ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋ณ‘์‚ฌ ์ˆ˜๋งŒํผ ๋ณ‘์‚ฌ์˜ ์ „ํˆฌ๋ ฅ์„ ์ž…๋ ฅ๋ฐ›์•„ arr์— ์ €์žฅํ•˜๊ณ  dp๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ํ˜„์žฌ ์œ„์น˜์—์„œ ์•ž์„ ์‚ดํŽด๋ณด๋ฉฐ ์ „ํˆฌ๋ ฅ์ด ์•ž๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. 

 

์ตœ์ข… dp๋ฅผ ์‚ดํŽด๋ณด๋ฉฐ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด n-max๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 1699_์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ  (0) 2026.02.09
[Baekjoon] 4097_์ˆ˜์ต  (0) 2026.01.30
[Baekjoon] 14501_ํ‡ด์‚ฌ  (0) 2026.01.27
[Baekjoon] 6221_The Bale Tower  (1) 2026.01.26
[Baekjoon] 10571_๋‹ค์ด์•„๋ชฌ๋“œ  (0) 2026.01.23