[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต 1๊ถŒ :: JLIS (์ฝ”๋“œ x - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„์„๋งŒ)

ํ•ฉ์นœ LIS

https://www.algospot.com/judge/problem/read/JLIS

๋ฌธ์ œ

์–ด๋–ค ์ˆ˜์—ด์—์„œ 0๊ฐœ ์ด์ƒ์˜ ์ˆซ์ž๋ฅผ ์ง€์šด ๊ฒฐ๊ณผ๋ฅผ ์› ์ˆ˜์—ด์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด '4 7 6'์€ '4 3 7 6 9'์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์ž…๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ์ˆซ์ž๊ฐ€ ์—†๊ณ  ์˜ค๋ฆ„ ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด๋“ค์„ ๊ฐ€๋ฆฌ์ผœ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€์š”. ์˜ˆ๋ฅผ ๋“ค์–ด '3 6 9'๋Š” ์•ž์˜ ์ˆ˜์—ด์˜ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด์ž…๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ์ •์ˆ˜ ์ˆ˜์—ด A ์™€ B ์—์„œ ๊ฐ๊ฐ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ์–ป์€ ๋’ค ์ด๋“ค์„ ํฌ๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ํ•ฉ์นœ ๊ฒƒ์„ ํ•ฉ์นœ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋กœ ํ•ฉ์‹œ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ๊ธด ์ˆ˜์—ด์„ ํ•ฉ์นœ LIS(JLIS, Joined Longest Increasing Subsequence)์ด๋ผ๊ณ  ๋ถ€๋ฆ…์‹œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด '1 3 4 7 9' ์€ '1 9 4' ์™€ '3 4 7' ์˜ JLIS์ž…๋‹ˆ๋‹ค. '1 9' ์™€ '3 4 7' ์„ ํ•ฉ์ณ '1 3 4 7 9'๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ง€์š”.

A ์™€ B ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, JLIS์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜ c ( 1 <= c <= 50 ) ๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ ์ค„์—๋Š” A ์™€ B ์˜ ๊ธธ์ด n ๊ณผ m ์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค (1 <= n,m <= 100). ๋‹ค์Œ ์ค„์—๋Š” n ๊ฐœ์˜ ์ •์ˆ˜๋กœ A ์˜ ์›์†Œ๋“ค์ด, ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” m ๊ฐœ์˜ ์ •์ˆ˜๋กœ B ์˜ ์›์†Œ๋“ค์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ์›์†Œ๋“ค์€ 32๋น„ํŠธ ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ํ•œ ์ค„์—, JLIS ์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ

3
3 3
1 2 4
3 4 7
3 3
1 2 3
4 5 6
5 3
10 20 30 1 2
10 20 30

์˜ˆ์ œ ์ถœ๋ ฅ

5
6
5

๋‚˜์˜ ๋‹ต

  1. ์ตœ๋Œ€ ์ฆ๊ฐ€ ์ˆ˜์—ด์„ ๊ตฌํ•ด์„œ ์กฐํ•ฉ

    ์‹œ๊ฐ„๋„ ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ์˜ˆ์ œ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ๋‹ค.

    ๊ฐ ์ˆ˜์—ด์˜ LIS๋ผ๊ณ  ํ•ด์„œ JLIS์˜ ์š”์†Œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜

์ฑ…์˜ ๋‹ต

 ์ฑ…์˜ ๋‹ต์ด ํ—ท๊ฐˆ๋ ค์„œ ํ•œ์ฐธ์„ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ฑฐ๊พธ๋กœ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. ๋จผ์ € (a) ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋“ค์— ํฌ์ธํ„ฐ๋ฅผ ๋Œ€๊ณ  ์žˆ๋‹ค๋ฉด 2, 30 ๋‘ ๊ฐœ๋ฅผ ์ด์šฉํ•œ LCS๊ฐ€ ๋‚˜์™€์„œ ๊ธธ์ด๋Š” 2์ผ ๊ฒƒ์ด๋‹ค. (๋‘ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด 1์ด๊ฒ ์ง€๋งŒ ๋‘ ์ˆ˜๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ๋ฅผ ๋ฐฐ์ œํ•˜๊ณ  ์ƒ๊ฐํ•˜๊ธฐ๋กœ ํ–ˆ์œผ๋ฏ€๋กœ ํ•ญ์ƒ 2๊ฐ€ ๋‚˜์˜จ๋‹ค.) ๊ทธ ๋‹ค์Œ A๋‚˜ B ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ํฌ์ธํ„ฐ๋ฅผ ์•ž์œผ๋กœ ๋‹น๊ธด๋‹ค. ๊ทธ ๋•Œ ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•œ๋‹ค๋ฉด ์š”์†Œ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ๋Š˜์–ด๋‚œ๋‹ค. (ํฌ์ธํ„ฐ๊ฐ€ ์•ž์—์„œ ์˜ค๋Š” ์—ฐ์‚ฐ์—์„œ ์ฆ๊ฐ€์ˆ˜์—ด๋งŒ์„ ์ทจํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์˜๋ฏธ์ด๋‹ค.)

 ๋”ฐ๋ผ์„œ (c) ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ํฌ์ธํ„ฐ๊ฐ€ 30,30์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์„ ๋•Œ A์˜ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ์†Œํ•œ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฆ๊ฐ€ํ–ˆ์œผ๋ฏ€๋กœ ๋’ค์˜ ๊ฒƒ์€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ„์˜ ๊ทธ๋ฆผ์—์„œ๋Š” ์›๋ž˜ 1๊ฐœ์˜ ์š”์†Œ๋ฅผ ๊ฐ–์ง€๋งŒ ๊ฐ™์€ ๋…ธ๋“œ๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š๊ฒ ๋‹ค ํ–ˆ์œผ๋ฏ€๋กœ ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ 2๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š” ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค.

 ์ด๋ฅผ ์•ž์—์„œ๋ถ€ํ„ฐ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋Š” ๊ฒƒ์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณด๋ฉด, ๋ชจ๋“  ํฌ์ธํ„ฐ์˜ ์œ„์น˜๋ฅผ ์กฐ์‚ฌํ•˜๋ฉด์„œ ํ˜„์žฌ ํฌ์ธํ„ฐ ์œ„์น˜๋ถ€ํ„ฐ A์˜ ํฌ์ธํ„ฐ๋ฅผ ์›€์ง์—ฌ์„œ ์ฆ๊ฐ€์ˆ˜์—ด๋™์•ˆ ์กฐ์‚ฌํ•˜๊ณ  B์˜ ํฌ์ธํ„ฐ๋ฅผ ์›€์ง์—ฌ์„œ ์ฆ๊ฐ€์ˆ˜์—ด๋™์•ˆ ์กฐ์‚ฌํ•˜๋Š” ์‹์œผ๋กœ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด๋‚ผ๊นŒ.. ํ›„ ... ์•„์ง ๋ฉ€์—ˆ๋‹ค.

๋ฐ˜์‘ํ˜•