ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [λ°±μ€€] 2075 N번째 큰 수 with Python
    PS 2022. 2. 21. 17:05
    728x90
    λ°˜μ‘ν˜•

    πŸ“Œ BOJ 2075 N번째 큰 수

    πŸ’‘ 쑰건

    1. NΓ—N의 ν‘œμ— 수 N2개 μ±„μ›Œμ Έ μžˆλ‹€. μ±„μ›Œμ§„ μˆ˜μ—λŠ” ν•œ 가지 νŠΉμ§•μ΄ μžˆλŠ”λ°,
      λͺ¨λ“  μˆ˜λŠ” μžμ‹ μ˜ ν•œ μΉΈ μœ„μ— μžˆλŠ” μˆ˜λ³΄λ‹€ ν¬λ‹€λŠ” 것이닀.

    2. ν‘œμ— μ±„μ›Œμ§„ μˆ˜λŠ” λͺ¨λ‘ λ‹€λ₯΄λ‹€.

    3. N(1 ≀ N ≀ 1,500)

    4. ν‘œμ— 적힌 μˆ˜λŠ” -10얡보닀 ν¬κ±°λ‚˜ κ°™κ³ , 10얡보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜μ΄λ‹€.

    5. 자료ꡬ쑰 μ‘μš©, μš°μ„ μˆœμœ„ 큐 ν™œμš©, μ •λ ¬ μœ ν˜•μ˜ 문제

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

    from sys import stdin
    import heapq
    
    n = int(stdin.readline())
    q = []
    cnt = 0
    for _ in range(n):
        data = list(map(int, stdin.readline().split()))
        for j in data:
            if cnt != n:
                heapq.heappush(q, j)
                cnt += 1
            else:
                if q[0] < j:
                    heapq.heappop(q)
                    heapq.heappush(q, j)
    
    q.sort()
    print(q[0])

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

    예제

    5
    12 7 9 15 5
    13 8 11 19 6
    21 10 26 31 16
    48 14 28 35 25
    52 20 32 41 49

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

    35

    ⌨️ 문제 풀이

    1. q λΌλŠ” 리슀트λ₯Ό λ§Œλ“ λ‹€. 이 λ¦¬μŠ€νŠΈλŠ” ν‘œμ˜ μ…€λ§ˆλ‹€μ˜ 숫자λ₯Ό 넣을 것이며, μš°μ„ μˆœμœ„ 큐둜 μ‚¬μš©λœλ‹€.

    2. 각 숫자λ₯Ό cnt λ³€μˆ˜κ°€ μž…λ ₯ 받은 nκ³Ό 같을 λ•ŒκΉŒμ§€ cnt + 1을 ν•΄μ£Όλ©° q 에 λ„£λŠ”λ‹€.

    3. λ§Œμ•½ q[0]의 값보닀 방금 μˆœνšŒν•˜κ³  μžˆλŠ” 값이 크닀면
      μš°μ„ μˆœμœ„κ°€ κ°€μž₯ 높은 것을 κΊΌλ‚΄κ³ , μˆœνšŒν•˜κ³  μžˆλŠ” 값을 λ„£λŠ”λ‹€.

    4. λͺ¨λ“  데이터λ₯Ό μˆœνšŒν–ˆλ‹€λ©΄, q λ₯Ό μ •λ ¬ν•˜κ³  κ°€μž₯ μ²«λ²ˆμ§Έμ— μžˆλŠ” 값을 좜λ ₯ν•œλ‹€.

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

    1. μš°μ„ μˆœμœ„ 큐의 μ„±μ§ˆμ„ μ΄μš©ν•˜λŠ” λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€.
    2. 자료ꡬ쑰의 κ°•μ˜λ₯Ό λ“£κΈ° μ „, μš°μ„ μˆœμœ„νλŠ” λŒ€μΆ© 이런 λŠλ‚Œμ΄μ§€~ λΌλŠ” μƒκ°μœΌλ‘œ ν’€μ—ˆλŠ”λ°
      자료ꡬ쑰 κ°•μ˜λ₯Ό 보고 문제λ₯Ό λ‹€μ‹œ λ³΄λ‹ˆ 이런 κΏ€ κ³¨λ“œλ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.