1 λΆ„ μ†Œμš”

λ°±μ€€ μ‚¬μ΄νŠΈ

λ°±μ€€ μ‚¬μ΄νŠΈ 링크

문제

μŠ€νƒ€λ°•μŠ€λŠ” μ†λ‹˜μ„ μž…μž₯μ‹œν‚¬ λ•Œ λ…νŠΉν•œ λ°©λ²•μœΌλ‘œ μž…μž₯μ‹œν‚¨λ‹€.

μŠ€νƒ€λ°•μŠ€μ—μ„œλŠ” μ†λ‹˜μ„ 8μ‹œκ°€ 될 λ•Œ κΉŒμ§€, λ¬Έμ•žμ— 쀄 μ„Έμ›Œ λ†“λŠ”λ‹€. 그리고 8μ‹œκ°€ λ˜λŠ” μˆœκ°„ μ†λ‹˜λ“€μ€ λͺ¨λ‘ μž…κ΅¬μ—μ„œ 컀피λ₯Ό ν•˜λ‚˜μ”© λ°›κ³ , 자리둜 κ°„λ‹€. κ°•ν˜ΈλŠ” μž…κ΅¬μ—μ„œ 컀피λ₯Ό ν•˜λ‚˜μ”© μ£ΌλŠ” 역할을 ν•œλ‹€.

μ†λ‹˜λ“€μ€ μž…κ΅¬μ— λ“€μ–΄κ°ˆ λ•Œ, κ°•ν˜Έμ—κ²Œ νŒμ„ μ€€λ‹€. μ†λ‹˜λ“€μ€ μžκΈ°κ°€ 컀피λ₯Ό λͺ‡ 번째 λ°›λŠ”μ§€μ— 따라 νŒμ„ λ‹€λ₯Έ μ•‘μˆ˜λ‘œ κ°•ν˜Έμ—κ²Œ μ€€λ‹€. 각 μ†λ‹˜μ€ κ°•ν˜Έμ—κ²Œ μ›λž˜ μ£Όλ €κ³  μƒκ°ν–ˆλ˜ 돈 - (받은 λ“±μˆ˜ - 1) 만큼의 νŒμ„ κ°•ν˜Έμ—κ²Œ μ€€λ‹€. λ§Œμ•½, μœ„μ˜ μ‹μœΌλ‘œ λ‚˜μ˜¨ 값이 음수라면, κ°•ν˜ΈλŠ” νŒμ„ 받을 수 μ—†λ‹€.

예λ₯Ό λ“€μ–΄, λ―Όν˜ΈλŠ” νŒμ„ 3원 μ£Όλ €κ³  ν–ˆκ³ , μž¬ν•„μ΄λŠ” νŒμ„ 2원, μ£Όν˜„μ΄κ°€ νŒμ„ 1원 μ£Όλ €κ³  ν•œ 경우λ₯Ό μƒκ°ν•΄λ³΄μž.

민호, μž¬ν•„, μ£Όν˜„μ΄ μˆœμ„œλŒ€λ‘œ 쀄을 μ„œμžˆλ‹€λ©΄, λ―Όν˜ΈλŠ” κ°•ν˜Έμ—κ²Œ 3-(1-1) = 3원, μž¬ν•„μ΄λŠ” 2-(2-1) = 1원, μ£Όν˜„μ΄λŠ” 1-(3-1) = -1원을 팁으둜 주게 λœλ‹€. μ£Όν˜„μ΄λŠ” 음수이기 λ•Œλ¬Έμ—, κ°•ν˜Έμ—κ²Œ νŒμ„ 주지 μ•ŠλŠ”λ‹€. λ”°λΌμ„œ, κ°•ν˜ΈλŠ” νŒμ„ 3+1+0=4원을 λ°›κ²Œ λœλ‹€.

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

μž…λ ₯

첫째 쀄에 μŠ€νƒ€λ°•μŠ€ μ•žμ— μ„œ μžˆλŠ” μ‚¬λžŒμ˜ 수 N이 주어진닀. N은 100,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€. λ‘˜μ§Έ 쀄뢀터 총 N개의 쀄에 각 μ‚¬λžŒμ΄ μ£Όλ €κ³  ν•˜λŠ” 팁이 주어진닀. νŒμ€ 100,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.

좜λ ₯

κ°•ν˜Έκ°€ 받을 수 μžˆλŠ” 팁의 μ΅œλŒ“κ°’μ„ 좜λ ₯ν•œλ‹€.

예제 μž…λ ₯ 1

4
3
3
3
3

예제 좜λ ₯ 1

6

예제 μž…λ ₯ 2

3
3
2
3

예제 좜λ ₯ 2

5

문제λ₯Ό ν’€λ©΄μ„œ λ§‰ν˜”λ˜ λΆ€λΆ„

  • μ†λ‹˜μ˜ μˆœμ„œλ₯Ό 바꿨을 λ•Œ, κ°•ν˜Έκ°€ 받을 수 μžˆλŠ” 팁의 μ΅œλŒ“κ°’μ„ κ΅¬ν•˜λŠ” κ³Όμ •μ—μ„œ μ›λž˜ μ£Όλ €κ³  μƒκ°ν–ˆλ˜ 돈이 λ§Žμ€ μˆœμ„œλŒ€λ‘œ 리슀트λ₯Ό μ •λ ¬ν•΄μ•Ό ν•œλ‹€.

μ½”λ“œ

ver(1)
import sys
n = int(sys.stdin.readline())
tips = []
result = 0
for i in range(n):
  tips.append(int(sys.stdin.readline()))

tips.sort(reverse=True)

for tip in range(n):
  value = (tips[tip]-(tip))
  if value > 0:
    result += value
print(result)

λŒ“κΈ€λ‚¨κΈ°κΈ°