๋ฐฑ์ค€ ๋ฐ˜๋„์ฒด ์„ค๊ณ„(Java ๊ตฌํ˜„)

2020. 8. 18. 22:46ใ†์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

๋ฐฑ์ค€ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๊ธฐ ์‹œ์ž‘ํ•œ์ง€ ํ•œ๋‹ฌ์งธ. ์•„์ง๋„ ๋‚˜์˜ ๋‡Œ์— ์žˆ๋Š” ์•„์ด๋””์–ด๋ฅผ ์ฝ”๋“œ๋กœ ํ’€์–ด๋‚ด๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.

๋ฌผ๋ก  ์ด ๋ฌธ์ œ๋Š” ์•„์ด๋””์–ด์กฐ์ฐจ ๋– ์˜ค๋ฅด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ธˆ ๊ณ ๋ฏผํ›„ ๋ธ”๋กœ๊ทธ๋“ค์˜ ๋‹ต๋ณ€์„ ๋ณด์•˜๋‹ค. 

์‚ฌ๋žŒ๋“ค์˜ ๊ธ€์„ ๋ณด๋‹ˆ ์ฒ˜์Œ์œผ๋กœ ๋ˆˆ์— ๋“ค์–ด์˜ค๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ทธ๊ฒƒ์€ LIS(์ตœ์žฅ ์ฆ๊ฐ€ ์ˆ˜์—ด)์ด์˜€๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด ์ˆซ์ž๋“ค์„ ์–ด๋– ํ•œ ์ˆ˜์˜ ์—ด๋“ค์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ์ˆซ์ž๋“ค ์ค‘์—์„œ ๋ถ€๋ถ„์ ์œผ๋กœ ์ถ”์ถœํ•ด ๊ธธ์ด๊ฐ€ ๊ฐ€์žฅ ๊ธด ์ˆ˜์—ด์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฝค๋‚˜ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด์˜€๋‹ค.

 

1. arr๋ฐฐ์—ด๊ณผ dp๋ฐฐ์—ด ๋‘๊ฐ€์ง€๋ฅผ ์„ ์–ธํ•œ๋‹ค.

2. dp๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— arr๋ฐฐ์—ด ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

3. len์ด๋ผ๋Š” ์ธ๋ฑ์Šค์˜ ๊ฐฏ์ˆ˜(dp๋ฐฐ์—ด์˜ ๊ธธ์ด)๋ฅผ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ณ€ํ™”์‹œํ‚ฌ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค.

4. arr์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ arr๋ฐฐ์—ด์˜ ๊ฐ’์ด dp๋ฐฐ์—ด์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์„๋•Œ or ํด ๋•Œ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

์•„๋ž˜ ์ฝ”๋“œ๋Š” ํ•œ ๋ธ”๋กœ๊ทธ์—์„œ ๋ณธ๋”ฐ์™”๋‹ค. ์ง€๊ธˆ์€ ๋ชจ๋ฐฉ์ด ์ตœ์„ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ํ•˜๊ณ ์žˆ๋‹ค. 

 

public class Main{ 
  
	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
 
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n+1];
        st = new StringTokenizer(br.readLine());
        for(int i =1; i<=n; i++) {
        	arr[i] = Integer.parseInt(st.nextToken());	
        }
        
        int[] dp = new int[n+1];
        dp[1] = arr[1];
        int len = 1;
        for(int i =2; i<=n ; i++) {
        	if(arr[i]>dp[len]) dp[++len] = arr[i];
        else {
        	int j;
        	for(j=1; j<=len;j++) {
        		if(arr[i]<=dp[j]) break;
        	}dp[j] = arr[i];
        }
		
        }
        System.out.println(len);
	}
}

 

์œ„์˜ ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์ƒ๊ธฐ๋Š” ํ•œ๊ฐ€์ง€ ์˜๋ฌธ์ ์ด ๋“ค์—ˆ๋‹ค. ๋‚จ๋Š” ์ˆซ์ž๋“ค์€ 1,3,5์ธ๋ฐ ์ด๊ฒƒ๋“ค์€ ๋ฌธ์ œ์˜ ๋‹ต์ธ 2,3,5์™€ ๋‹ค๋ฅด์ง€์•Š๋‚˜? ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ๋“ค์˜ ๋‹ต์—์„œ๋Š” ๋ฌด๊ด€ํ•˜๋‹ค๊ณ ํ•˜๋Š”๋ฐ ์™œ ๋ฌด๊ด€ํ•œ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ์‚ฌ์‹ค LIS์˜ ๊ฐœ๋…์„ ์ž˜ ๋ชจ๋ฅด๋Š” ๊ฑธ์ง€๋„ ๋ชจ๋ฅธ๋‹ค. ๊ทธ๋ž˜๋„ LIS์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๊ฐœ๋…์ ์œผ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ”๋ฅผ ํ’€์–ด ๋‚ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ธ€์„ ๋งˆ์นœ๋‹ค.