PS

[λ°±μ€€] 1758 μ•Œλ°”μƒ κ°•ν˜Έ with Python

ν˜•μ€€_It's 2022. 3. 17. 23:58
728x90
λ°˜μ‘ν˜•

πŸ“Œ BOJ 1758 μ•Œλ°”μƒ κ°•ν˜Έ

πŸ’‘ 쑰건

  1. μ†λ‹˜λ“€μ€ μž…κ΅¬μ— λ“€μ–΄κ°ˆ λ•Œ, κ°•ν˜Έμ—κ²Œ νŒμ„ μ€€λ‹€. μ†λ‹˜λ“€μ€ μžκΈ°κ°€ 컀피λ₯Ό λͺ‡ 번째 λ°›λŠ”μ§€μ— 따라 νŒμ„ λ‹€λ₯Έ μ•‘μˆ˜λ‘œ κ°•ν˜Έμ—κ²Œ μ€€λ‹€.

  2. 각 μ†λ‹˜μ€ κ°•ν˜Έμ—κ²Œ μ›λž˜ μ£Όλ €κ³  μƒκ°ν–ˆλ˜ 돈 - (받은 λ“±μˆ˜ - 1) 만큼의 νŒμ„ κ°•ν˜Έμ—κ²Œ μ€€λ‹€.

  3. λ§Œμ•½, μœ„μ˜ μ‹μœΌλ‘œ λ‚˜μ˜¨ 값이 음수라면, κ°•ν˜ΈλŠ” νŒμ„ 받을 수 μ—†λ‹€.

  4. μ‚¬λžŒμ˜ 수 Nκ³Ό, 각 μ‚¬λžŒμ΄ μ£Όλ €κ³  μƒκ°ν•˜λŠ” 팁이 μ£Όμ–΄μ§ˆ λ•Œ, μ†λ‹˜μ˜ μˆœμ„œλ₯Ό 적절히 λ°”κΏ” κ°•ν˜Έκ°€ 받을 수 μž‡λŠ” 팁의 μ΅œλŒ“κ°’μ„ κ΅¬ν•˜λŠ” 문제

  5. N은 100,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€. νŒμ€ 100,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.

  6. μ •λ ¬ μœ ν˜•μ˜ 문제

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

from sys import stdin

res, n = 0, int(stdin.readline())
arr = []
for i in range(n):
    arr.append(int(stdin.readline()))

arr.sort(reverse=True)

for i in range(1, n + 1):
    tips = arr[i-1] - (i - 1)
    if tips > 0:
        res += tips

print(res)

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

예제

4
3
3
3
3

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

6

⌨️ 문제 풀이

  1. 각 μ†λ‹˜μ΄ μ§€λΆˆν•  돈이 λ‹΄κΈ΄ 리슀트λ₯Ό μž…λ ₯λ°›μ•„ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

  2. κ°€μž₯ λˆμ„ 많이 λ‚Ό μ†λ‹˜μ΄ 첫번째 λ“±μˆ˜κ°€ λ˜μ–΄μ•Ό μ΅œλŒ“κ°’μ„ ꡬ할 수 μžˆλ‹€.

  3. 계산식을 μ‚¬μš©ν•΄ 각 μ†λ‹˜μ—κ²Œ 받을 수 μžˆλŠ” 팁의 κΈˆμ•‘μ„ 더해 좜λ ₯ν•œλ‹€.

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

λ°˜μ‘ν˜•