ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฐฑ์ค: 14002 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด 4
dirmathfl 2020. 7. 1. 22:30๋ฌธ์
14002๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด 4
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์์ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ A = {10, 20, 10, 30, 20, 50} ์ด
www.acmicpc.net
๋ฌธ์ ํ์ด
์ด์ ์ ๋ค๋ฃจ์๋ 11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ํ์ด์์ ๊ฐ ์์๋ค๋ง ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค. ์ด๋ ๋ฉ๋ชจ์ด์ ์ด์ ์ ํตํด ์์ด์ ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์์ ์ ์ค ์์์๊ฐ ์ผ๋งํผ ์๋์ง ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฝ๋
from sys import stdin
if __name__ == '__main__':
n = int(stdin.readline())
nums = list(map(int, stdin.readline().split()))
# ์๊ธฐ์์ ์ ํฌํจํ๋ฏ๋ก 1๋ก ์ด๊ธฐํ
answer = [1] * n
for i in range(1, n):
for j in range(i):
if nums[j] < nums[i]:
answer[i] = max(answer[i], answer[j] + 1)
max_len = max(answer)
print(max_len)
# ์ถ๊ฐ ๋ ๋ถ๋ถ
ret = []
for i, length in enumerate(answer[::-1]):
if length == max_len:
ret.append(nums[n - i - 1])
max_len -= 1
print(*ret[::-1])
์ฆ๊ฐํ๋ ์ต๋ ์์ด์ด ๋๋ ์์ ๋ถํฐ, ๊ธธ์ด๋ฅผ 1์ฉ ๊ฐ์ ์์ผ๊ฐ๋ฉฐ ์ฆ๊ฐํ๋ ์์ด์ ๊ฐ์ ์ฐพ์ ์ ์๋ค. ๋ค์์ ๋ถํฐ ๋ฆฌ์คํธ์ ๊ฐ์ ๊ธฐ๋กํ๊ฒ ๋๋ฏ๋ก ์ถ๋ ฅ ํ ๋๋ ๋ฐ์ ์์ผ์ฃผ์ด์ผ ํ๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 1699 ์ ๊ณฑ์์ ํฉ (0) | 2020.07.01 |
---|---|
๋ฐฑ์ค: 1912 ์ฐ์ํฉ (0) | 2020.07.01 |
๋ฐฑ์ค: 11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (0) | 2020.06.30 |
๋ฐฑ์ค: 2193 ์ด์น์ (0) | 2020.06.30 |
๋ฐฑ์ค: 10844 ์ฌ์ด ๊ณ๋จ ์ (0) | 2020.06.30 |