ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [λ°±μ€€] 14469 μ†Œκ°€ 길을 κ±΄λ„ˆκ°„ 이유 3 with Python
    PS 2023. 4. 1. 22:41
    728x90
    λ°˜μ‘ν˜•

    πŸ“Œ BOJ 14469 μ†Œκ°€ 길을 κ±΄λ„ˆκ°„ 이유 3

    πŸ’‘ 쑰건

    1. N마리의 μ†Œκ°€ 이 농μž₯에 λ°©λ¬Έν•˜λŸ¬ μ™”λ‹€. μ†Œκ°€ λ„μ°©ν•œ μ‹œκ°„κ³Ό κ²€λ¬Έλ°›λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μ€ μ†Œλ§ˆλ‹€ λ‹€λ₯΄λ‹€. (λ¬Όλ‘  같을 μˆ˜λ„ μžˆλ‹€.)
    1. 두 μ†Œκ°€ λ™μ‹œμ— 검문을 받을 μˆ˜λŠ” μ—†λ‹€. 예λ₯Ό λ“€μ–΄, ν•œ μ†Œκ°€ 5μ΄ˆμ— λ„μ°©ν–ˆκ³  7초 λ™μ•ˆ 검문을 λ°›μœΌλ©΄,
      8μ΄ˆμ— λ„μ°©ν•œ κ·Έ λ‹€μŒ μ†ŒλŠ” 12μ΄ˆκΉŒμ§€ 쀄을 μ„œμ•Ό 검문을 받을 수 μžˆλ‹€.
    1. λͺ¨λ“  μ†Œκ°€ 농μž₯에 μž…μž₯ν•˜λ €λ©΄ μ–Όλ§ˆλ‚˜ κ±Έλ¦¬λŠ”μ§€ κ΅¬ν•˜λŠ” 문제.
    1. 첫 쀄에 100 μ΄ν•˜μ˜ μ–‘μ˜ μ •μˆ˜ N이 주어진닀.

      λ‹€μŒ Nμ€„μ—λŠ” ν•œ 쀄에 ν•˜λ‚˜μ”© μ†Œμ˜ 도착 μ‹œκ°κ³Ό κ²€λ¬Έ μ‹œκ°„μ΄ 주어진닀. 각각 1,000,000 μ΄ν•˜μ˜ μ–‘μ˜ μ •μˆ˜μ΄λ‹€.

    1. μ •λ ¬, 그리디 μœ ν˜•μ˜ 문제

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

    예제 1

    3
    2 1
    8 3
    5 7

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

    15

    ⌨️ 문제 풀이

    1. κΈ°λ³Έ μ•„μ΄λ””μ–΄λŠ” μ •λ ¬λΆ€ν„° μ‹œμž‘μ„ ν–ˆλ‹€. λͺ¨λ“  μ†Œκ°€ μž…μž₯ν•˜λ €λ©΄ μ–Όλ§ˆλ‚˜ κ±Έλ¦¬λŠ”μ§€, μ΅œμ†Œμ‹œκ°„μ„ 좜λ ₯ν•˜λŠ” λ¬Έμ œμ΄λ‹€.
    1. μ†Œκ°€ λͺ¨λ‘ μž…μž₯ν•˜λŠ”λ°μ— κ±Έλ¦¬λŠ” μ΅œμ†Œ μ‹œκ°„μ„ 찾으렀면, μž…μž₯ν•˜λŠ” 번호λ₯Ό κΈ°μ€€μœΌλ‘œ 정렬을 ν•΄μ•Όν•œλ‹€.
    1. μ†Œκ°€ λ„μ°©ν•œ μ‹œκ°„κ³Ό κ²€λ¬Έ λ°›λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ€ 같을 수 μžˆμœΌλ―€λ‘œ, lambda 둜 μ •λ ¬ μ‹œμΌ°λ‹€.
      기쀀은 (μ†Œκ°€ λ„μ°©ν•œ μ‹œκ°„, κ²€λ¬Έ λ°›λŠ” μ‹œκ°„) 을 각각 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν–ˆλ‹€.
    1. μ •λ ¬λœ 리슀트λ₯Ό μˆœνšŒν•˜λ©΄μ„œ, λ§Œμ•½ ν˜„μž¬ 흐λ₯Έ μ‹œκ°„(ans)κ°€ μ†Œκ°€ λ„μ°©ν•œ μ‹œκ°„(s) 보닀 μž‘κ±°λ‚˜ κ°™λ‹€λ©΄ ans에 sλ₯Ό λ„£μ–΄μ€€λ‹€.
      κ·Έ ν›„ ans에 κ²€λ¬Έμ‹œκ°„μ„ 더해쀀닀.

    2. (4)λ²ˆμ— μ˜ˆμ™Έλ˜λŠ” 쑰건이라면 κ·Έλƒ₯ ans에 cλ₯Ό 더해주고 좜λ ₯ν•œλ‹€.

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

    from sys import stdin
    
    n = int(stdin.readline())
    arr = []
    
    for _ in range(n):
        a, b = map(int, stdin.readline().split())
        arr.append((a, b))
    
    arr.sort(key=lambda x: (x[0], x[1]))
    
    ans = 0
    
    for i in range(n):
        s, c = arr[i][0], arr[i][1]
        if ans <= s:
            ans = s
            ans += c
    
        else:
            ans += c
    
    print(ans)
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.