Post

๐Ÿข ๊ฐ€์žฅ ๊ธด ๋ฐ”์ดํ† ๋‹‰ ๋ถ€๋ถ„ ์ˆ˜์—ด

1. ๋ฌธ์ œ ๋งํฌ

๊ฐ€์žฅ ๊ธด ๋ฐ”์ดํ† ๋‹‰ ๋ถ€๋ถ„ ์ˆ˜์—ด


2. ์ฝ”๋“œ

PyPy3ย  111312KB 2068ms

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"""
[11054] ๊ฐ€์žฅ ๊ธด ๋ฐ”์ดํ† ๋‹‰ ๋ถ€๋ถ„ ์ˆ˜์—ด

๐Ÿ’› ๋ฌธ์ œ
์ˆ˜์—ด S๊ฐ€ ์–ด๋–ค ์ˆ˜ Sk๋ฅผ ๊ธฐ์ค€์œผ๋กœ S1 < S2 < ... Sk-1 < Sk > Sk+1 > ... SN-1 > SN์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด,
๊ทธ ์ˆ˜์—ด์„ ๋ฐ”์ดํ† ๋‹‰ ์ˆ˜์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, {10, 20, 30, 25, 20}๊ณผ {10, 20, 30, 40}, {50, 40, 25, 10} ์€ ๋ฐ”์ดํ† ๋‹‰ ์ˆ˜์—ด์ด์ง€๋งŒ,
{1, 2, 3, 2, 1, 2, 3, 2, 1}๊ณผ {10, 20, 30, 40, 20, 30} ์€ ๋ฐ”์ดํ† ๋‹‰ ์ˆ˜์—ด์ด ์•„๋‹ˆ๋‹ค.

์ˆ˜์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ์ˆ˜์—ด์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด ์ค‘ ๋ฐ”์ดํ† ๋‹‰ ์ˆ˜์—ด์ด๋ฉด์„œ ๊ฐ€์žฅ ๊ธด ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๐Ÿ’š ์ž…๋ ฅ
์ฒซ์งธ ์ค„์— ์ˆ˜์—ด A์˜ ํฌ๊ธฐ N์ด ์ฃผ์–ด์ง€๊ณ ,
๋‘˜์งธ ์ค„์—๋Š” ์ˆ˜์—ด A๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” Ai๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 1,000, 1 โ‰ค Ai โ‰ค 1,000)

๐Ÿ’™ ์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ์ˆ˜์—ด A์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด ์ค‘์—์„œ ๊ฐ€์žฅ ๊ธด ๋ฐ”์ดํ† ๋‹‰ ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
"""

# ์ˆ˜์—ด A์˜ ํฌ๊ธฐ N
n = int(input())
# ์ˆ˜์—ด A๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” Ai
array = list(map(int, input().split()))

dpUp = [1 for _ in range(n)]
dpDown = [1 for _ in range(n)]

for k in range(n):
    # ์ˆœ ๋ฐฉํ–ฅ
    for i in range(k):
        for j in range(i):
            if array[j] < array[i]:
                # ์ด์ „ ์›์†Œ์™€ ํฐ์ง€๋ฅผ ๋น„๊ตํ•ด์„œ, ํฌ๋ฉด 1 ๋”ํ•˜๊ธฐ
                dpUp[i] = max(dpUp[i], dpUp[j]+1)

    # ์—ญ ๋ฐฉํ–ฅ
    for i in range(n-1, k-1, -1):
        for j in range(i+1, n):
            if array[i] > array[j]:
                # ์ด์ „ ์›์†Œ์™€ ํฐ์ง€๋ฅผ ๋น„๊ตํ•ด์„œ, ํฌ๋ฉด 1 ๋”ํ•˜๊ธฐ
                dpDown[i] = max(dpDown[i], dpDown[j]+1)

dp = [1 for _ in range(n)]

for i in range(n):
    dp[i] = dpUp[i] + dpDown[i]

print(max(dp)-1)


3. ํ•ด์„ค

  • ์ˆœ๋ฐฉํ–ฅ, ์—ญ๋ฐฉํ–ฅ ๋Œ€๋กœ ์ด์ „ ์›์†Œ๋ณด๋‹ค ํฌ๋ฉด dp + 1 ํ•œ๋‹ค
  • ๊ฒน์น˜๋Š”๊ฒŒ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€์žฅ ํฐ ์›์†Œ์—์„œ -1 ๋นผ์ค€๋‹ค (์ค‘๋ณต๋˜์—ˆ์œผ๋ฏ€๋กœ)
This post is licensed under CC BY 4.0 by the author.