DevYoon

[λ°±μ€€] 2491.μˆ˜μ—΄ (Python) λ³Έλ¬Έ

PS/Baekjoon

[λ°±μ€€] 2491.μˆ˜μ—΄ (Python)

gimewn 2022. 4. 28. 23:06

link πŸ”— https://www.acmicpc.net/problem/2491

 

2491번: μˆ˜μ—΄

0μ—μ„œλΆ€ν„° 9κΉŒμ§€μ˜ 숫자둜 이루어진 N개의 μˆ«μžκ°€ λ‚˜μ—΄λœ μˆ˜μ—΄μ΄ μžˆλ‹€. κ·Έ μˆ˜μ—΄ μ•ˆμ—μ„œ μ—°μ†ν•΄μ„œ μ»€μ§€κ±°λ‚˜(같은 것 포함), ν˜Ήμ€ μ—°μ†ν•΄μ„œ μž‘μ•„μ§€λŠ”(같은 것 포함) μˆ˜μ—΄ 쀑 κ°€μž₯ 길이가 κΈ΄ 것을 μ°Ύ

www.acmicpc.net

 

1️⃣ DPλ₯Ό ν™œμš©ν•˜λŠ” 문제

2️⃣ 증가할 λ•Œμ™€ κ°μ†Œν•  λ•Œλ₯Ό λ‚˜λˆ„μ–΄ 배열을 λ§Œλ“€μ–΄μ„œ μ¦κ°€ν•˜λŠ” μƒνƒœμ—μ„œλŠ” 증가배열에 더해주고, κ°μ†Œν•˜λŠ” μƒνƒœμ—μ„œλŠ” κ°μ†Œλ°°μ—΄μ— λ”ν•΄μ£Όμ—ˆλ‹€.

3️⃣ 이전 κ°’κ³Ό 같은 μƒνƒœμ—λŠ” 증가와 κ°μ†Œ μ–‘μͺ½ λͺ¨λ‘μ— λ”ν•΄μ£Όμ—ˆλ‹€.

 

n = int(input())
arr = list(map(int, input().split()))
isTrue = [1]*n
isFalse = [1]*n

for idx in range(1, n):
    if arr[idx] < arr[idx-1]: # κ°μ†Œν•˜λ©΄
        isFalse[idx] = isFalse[idx-1]+1
    elif arr[idx] > arr[idx-1]: # μ¦κ°€ν•˜λ©΄
        isTrue[idx] = isTrue[idx-1]+1
    else: # κ°™μœΌλ©΄
        isFalse[idx] = isFalse[idx - 1] + 1
        isTrue[idx] = isTrue[idx - 1] + 1

print(max(max(isTrue), max(isFalse)))

 

βœοΈλ©”λͺ¨

  • λ””ν”Ό λ„ˆλ¬΄ μ–΄λ ΅λ‹€πŸ₯²
  • μ—°μŠ΅μ΄ μ•„μ£Όμ•„μ£Ό 많이 ν•„μš”ν•  것 κ°™λ‹€. ν™”μ΄νŒ…!