๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 14231_๋ฐ•์Šค ํฌ์žฅ

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

< ๋ฐ•์Šค ํฌ์žฅ >

 

๋ฌธ์ œ ํ’€์ด 

 

์•ž์— ๋ฐ•์Šค๋ฅผ ์‚ดํŽด๋ณด๋ฉฐ ํ˜„์žฌ ๋ฐ•์Šค๋ณด๋‹ค ์ž‘์€์ง€ ํ™•์ธํ•œ๋‹ค.

 

my solution (Java)

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

public class _14231_ { // ๋ฐ•์Šค ํฌ์žฅ

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

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

		st = new StringTokenizer(bf.readLine());

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

		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 result = 0;
		for (int i = 0; i < n; i++) {
			result = Math.max(result, dp[i]);
		}
		System.out.println(result);
	}
}
๋ณ€์ˆ˜)
n : ๋ฐ•์Šค์˜ ๊ฐœ์ˆ˜ 
arr : ๋ฐ•์Šค ํฌ๊ธฐ 
dp : ๊ณผ๋Œ€ ํฌ์žฅํ•œ ๋ฐ•์Šค๋“ค
result : ๊ณผ๋Œ€ ํฌ์žฅํ•œ ๋ฐ•์Šค ๊ฐœ์ˆ˜ 

 

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