PS

[λ°±μ€€] 11497 ν†΅λ‚˜λ¬΄ κ±΄λ„ˆλ›°κΈ° with Python

ν˜•μ€€_It's 2021. 12. 6. 21:07
728x90
λ°˜μ‘ν˜•

πŸ“Œ BOJ 11497 ν†΅λ‚˜λ¬΄ κ±΄λ„ˆλ›°κΈ°

πŸ’‘ 쑰건

  1. 첫 쀄에 ν†΅λ‚˜λ¬΄μ˜ 개수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ (5 ≀ N ≀ 10,000)
    λ‘˜μ§Έ 쀄에 각 ν†΅λ‚˜λ¬΄μ˜ 높이λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ (1 ≀ Li ≀ 100,000)
  2. ν†΅λ‚˜λ¬΄ κ±΄λ„ˆλ›°κΈ°μ˜ λ‚œμ΄λ„λŠ” μΈμ ‘ν•œ 두 ν†΅λ‚˜λ¬΄ κ°„μ˜ λ†’μ΄μ˜ 차의 μ΅œλŒ“κ°’μœΌλ‘œ κ²°μ •λœλ‹€.
    κ°€μž₯ 첫 ν†΅λ‚˜λ¬΄μ™€ κ°€μž₯ λ§ˆμ§€λ§‰ ν†΅λ‚˜λ¬΄ μ—­μ‹œ 인접해 μžˆλ‹€.
  3. 그리디 μ•Œκ³ λ¦¬μ¦˜μœ ν˜•μ˜ 문제

πŸ–₯ μ†ŒμŠ€ μ½”λ“œ

from sys import stdin

for _ in range(int(stdin.readline())):
    n = int(stdin.readline())
    arr = list(map(int, stdin.readline().split()))
    arr.sort()
    res = 0
    for i in range(2, n):
        res = max(res, abs(arr[i] - arr[i-2]))
    print(res)

πŸ”– 예제 및 μ‹€ν–‰κ²°κ³Ό

예제

3
7
13 10 12 11 10 11 12
5
2 4 5 7 9
8
6 6 6 6 6 6 6 6

μ‹€ν–‰κ²°κ³Ό

1
4
0

⌨️ 문제 풀이

  1. λ‹¨μˆœνžˆ 정렬을 해도 λ˜μ§€λ§Œ, 첫 ν†΅λ‚˜λ¬΄μ™€ λ§ˆμ§€λ§‰ ν†΅λ‚˜λ¬΄κ°€ μΈμ ‘ν•΄μžˆλ‹€λŠ” 쑰건이 μžˆλ‹€.

  2. 1λ²ˆμ—μ„œ λ§ν•œ 쑰건 λ•Œλ¬Έμ—, κ°€μž₯ 큰 값을 κΈ°μ€€μœΌλ‘œ μ–‘μͺ½μ— 점점 μž‘κ²Œ 배치λ₯Ό ν•˜λ©΄
    크기의 차이λ₯Ό κ°€μž₯ 많이 쀄일 수 μžˆλ‹€.

  3. 즉, 인덱슀 값이 2μ”© μ°¨μ΄λ‚˜λŠ” κ°’λ“€ 쀑 κ°€μž₯ 큰 값이 μ΅œλŒ€ 높이 μ°¨κ°€ λœλ‹€.

πŸ’Ύ λŠλ‚€μ 

  1. 문제 ν’€μ΄μ—μ„œ 2번과 3λ²ˆμ— λŒ€ν•΄μ„œ μ΄ν•΄ν•˜μ§€ λͺ»ν•΄μ„œ 힘이 λ“€μ—ˆλ‹€.
  2. μ΄ν•΄ν•˜κ³  λ‹€μ‹œ 풀어보기λ₯Ό λ°˜λ³΅ν•΄μ•Όν•  λ¬Έμ œμ΄λ‹€.
  3. 2021/12/06 λ‹€μ‹œ ν’€μ–΄λ³΄μ•˜λŠ”λ° 또 ν‹€λ Έλ‹€. 해섀을 λ³΄λ‹ˆ 기얡이 λ‚˜κΈ΄ν•˜λŠ”λ° 또 이해가 μ•ˆλœλ‹€.
λ°˜μ‘ν˜•