[๋ฐฑ์ค€-11053] ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด / Python

๐Ÿ“š Problem Solving/Baekjoon

https://www.acmicpc.net/problem/11053

 

11053๋ฒˆ: ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด

์ˆ˜์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜์—ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์šฐ์— ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์€ A = {10, 20, 10, 30, 20, 50} ์ด

www.acmicpc.net

n = int(input())
arr = list(map(int, input().split()))
d = [0] * n

for i in range(n):
    for j in range(i):
        if arr[i] > arr[j] and d[i] < d[j]:
            d[i] = d[j]
    d[i] += 1

print(max(d))

 

ํ•ด์„ค

์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ์ ‘ํ–ˆ์„ ๋• ์ด์ „ ๊ฐ’๋“ค ์ค‘ ํ˜„์žฌ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์–ตํ•ด์„œ ํ‘ธ๋Š” ๋ฌธ์ œ์ธ์ค„ ์•Œ์•˜๋Š”๋ฐ ์•„๋‹ˆ์—ˆ๋‹ค๐Ÿ˜…

์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ด์ „ ๊ฐ’๋“ค ์ค‘ ํ˜„์žฌ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ด๋ฉด์„œ ํ˜„์žฌ ๊ฐ’๊นŒ์ง€์˜ ๊ธธ์ด๋ณด๋‹ค ๋” ํฐ ๊ธธ์ด๋ฅผ ๋งŒ์กฑํ•˜๋ฉด ํ˜„์žฌ ๊ฐ’ ๊ธธ์ด๋Š” ํ•ด๋‹น ์ด์ „ ๊ฐ’์˜ ๊ธธ์ด + 1์ด ๋œ๋‹ค.