𝘚𝘭𝘰𝘸 𝘣𝘢𝘡 𝘴𝘡𝘦𝘒π˜₯𝘺

[ꡬ름] ꡬ름곡원 - 파이썬 λ³Έλ¬Έ

μ½”λ”©ν…ŒμŠ€νŠΈ μ€€λΉ„

[ꡬ름] ꡬ름곡원 - 파이썬

.23 2024. 11. 7. 14:02
문제

πŸ”— : https://level.goorm.io/exam/51354/ꡬ름곡원/quiz/1

κΉ¨λ—ν•˜κ²Œ 관리가 잘 λ˜μ–΄μžˆκΈ°λ‘œ μ†Œλ¬Έλ‚œ κ΅¬λ¦„κ³΅μ›μ—λŠ” N개의 λ²€μΉ˜κ°€ μžˆλ‹€. ν˜„μž¬ i번째 λ²€μΉ˜μ—λŠ” Aiλͺ…μ˜ μ‚¬λžŒμ΄ μ•‰μ•„μžˆλŠ”λ°, ꡬ름곡원을 μ°Ύμ•„μ˜¨ Mλͺ…μ˜ μ‚¬λžŒλ“€μ΄ λ²€μΉ˜μ— μΆ”κ°€λ‘œ μ•‰μœΌλ €κ³  ν•œλ‹€.

 

Mλͺ…μ˜ μ‚¬λžŒλ“€μ΄ N개의 λ²€μΉ˜μ— 각자 잘 λ‚˜λˆ μ•‰μ•˜λ‹€κ³  ν•  λ•Œ, μ‚¬λžŒμ΄ κ°€μž₯ 많이 μ•‰μ•„μžˆλŠ” 벀치λ₯Ό μ°ΎλŠ”λ‹€. κ·Έ λ²€μΉ˜μ— μ•‰μ•„μžˆλŠ” μ‚¬λžŒμ˜ 수λ₯Ό K라고 ν•˜μž. κ°€λŠ₯ν•œ K의 κ°’ 쀑 μ΅œμ†Ÿκ°’κ³Ό μ΅œλŒ“κ°’μ„ 각각 κ΅¬ν•˜μ—¬λΌ.

 

μž…λ ₯

첫째 쀄에 벀치의 μˆ˜μ™€ ꡬ름곡원에 μ°Ύμ•„μ˜¨ μ‚¬λžŒμ˜ 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ N, M이 곡백을 두고 주어진닀.

λ‘˜μ§Έ 쀄에 각 λ²€μΉ˜μ— μ•‰μ•„μžˆλŠ” μ‚¬λžŒμ˜ 수 A1, A2, ... , AN이 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μ •μˆ˜λ‘œ 주어진닀.

 

  • 1 ≀ N ≀ 2 X 105
  • 1 ≀ M ≀ 109
  • 0 ≀ Ai ≀ 106
  • μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” λͺ¨λ“ μˆ˜λŠ” μ •μˆ˜μ΄λ‹€.

 

좜λ ₯

ꡬ름곡원을 μ°Ύμ•„μ˜¨ Mλͺ…μ˜ μ‚¬λžŒμ΄ λ²€μΉ˜μ— μΆ”κ°€λ‘œ μ•‰μ•˜μ„ λ•Œ, μ‚¬λžŒμ΄ κ°€μž₯ 많이 μ•‰μ•„μžˆλŠ” 벀치λ₯Ό μ°ΎλŠ”λ‹€. κ·Έ λ²€μΉ˜μ— μ•‰μ•„μžˆλŠ” μ‚¬λžŒμ˜ 수 K에 λŒ€ν•΄, κ°€λŠ₯ν•œ K의 κ°’ 쀑 μ΅œμ†Ÿκ°’κ³Ό μ΅œλŒ“κ°’μ„ 좜λ ₯ν•œλ‹€.

μ˜ˆμ‹œ 1

μž…λ ₯

4 6
1 1 1 1

좜λ ₯

3 7

 


νŒŒμ΄μ¬μ΄λž‘ μΉœν•΄μ§€κΈ° μ—°μŠ΅λ‹¨κ³„λ‘œ ν’€μ—ˆλ‹€.

μˆ˜ν•™..?인지 μ• λ§€ν•œ κ°„λ‹¨ν•œ κ΅¬ν˜„λ¬Έμ œ

 

μ‚¬λžŒμ΄ κ°€μž₯ 많이 앉은 벀치의 인원 수λ₯Ό K라고 ν•  λ•Œ, Kκ°’μ˜ μ΅œλŒ“κ°’μ€ λ‹¨μˆœνžˆ 'λͺ°μ•„ 앉은 경우' 이닀.

Mλͺ…μ˜ μ‚¬λžŒλ“€μ΄ N개의 λ²€μΉ˜μ— μ‚¬μ΄μ’‹κ²Œ λ‚˜λˆ  앉지 μ•Šκ³ ,

μ›λž˜ κ°€μž₯ 많이 μ•‰μ•„μžˆλŠ” λ²€μΉ˜μ— Mλͺ…μ˜ 인원이 λͺ°μ•„ 앉을 λ•Œ κ°€μž₯ μ΅œλŒ“κ°’μ΄ λœλ‹€.

K_max = max(bench) + M

 

Kκ°’μ˜ μ΅œμ†Ÿκ°’μ€ μ›λž˜ λ²€μΉ˜μ— μ•‰μ•„μžˆλ˜ μ‚¬λžŒλ“€κ³Ό μƒˆλ‘œ λ“€μ–΄μ˜¬ Mλͺ…μ˜ μ‚¬λžŒλ“€μ΄ N개의 λ²€μΉ˜μ— μ΅œλŒ€ν•œ 골고루 μ•‰μ•˜μ„ λ•Œ κ°€μž₯ 많이 μ•‰μ•„μžˆλŠ” λ²€μΉ˜κ°€ 될 수 μžˆλ‹€.

 

예λ₯Ό λ“€λ©΄,

 

μž…λ ₯ μ˜ˆμ‹œ 1κ³Ό 같이 4개의 λ²€μΉ˜μ— 각각 1λͺ…μ”© μ•‰μ•„μžˆκ³  6λͺ…μ˜ μ‚¬λžŒμ΄ μƒˆλ‘œ μ•‰μœΌλ €κ³  ν•  λ•Œ

κΈ°μ‘΄ 인원 4λͺ… + μƒˆλ‘œ λ“€μ–΄μ˜¨ 인원 6λͺ… 총 10λͺ…μ˜ 인원이 4개의 λ²€μΉ˜μ— κ°€μž₯ 골고루 μ•‰λŠ” 방법은

3 3 2 2 둜 μ•‰λŠ” 방법이닀. 이 λ•Œμ˜ K값은 3이 λœλ‹€.

 

 

λ§ˆμ°¬κ°€μ§€λ‘œ 3개의 λ²€μΉ˜μ— 각각 1λͺ…, 6λͺ…, 5λͺ…이 μ•‰μ•„μžˆκ³  6λͺ…μ˜ μ‚¬λžŒμ΄ μƒˆλ‘œ μ•‰μœΌλ €κ³  ν•  λ•Œ

κΈ°μ‘΄ 인원 12λͺ… + μƒˆλ‘œ λ“€μ–΄μ˜¨ 인원 6λͺ… 총 18λͺ…μ˜ 인원이 3개의 λ²€μΉ˜μ— 골고루 μ•‰λŠ” 방법은

6 6 6 으둜 μ•‰λŠ” 방법일 것이닀. λ§ˆμ°¬κ°€μ§€λ‘œ 이 λ•Œμ˜ K값은 6이 λœλ‹€.

 

 

근데 μ΄λ ‡κ²Œ ν’€λ©΄ 생각해봐야 ν•  점이 ν•œ λ²€μΉ˜μ— λͺ°λ €μ•‰μ•„μžˆμ„ λ•Œ λΌμ„œ,

3개의 λ²€μΉ˜μ— 10λͺ…, 0λͺ…, 0λͺ…이 μ•‰μ•„μžˆκ³  10λͺ…μ˜ 인원이 μƒˆλ‘œ μ•‰μœΌλ €κ³  ν•  λ•Œ,

총 20λͺ…μ˜ 인원이 3개의 λ²€μΉ˜μ— 골고루 μ•‰μœΌλ €κ³  ν•˜λ©΄ 7 7 6 μ΄κ² μ§€λ§Œ,

μ›λž˜ 첫번째 λ²€μΉ˜μ— 10λͺ…이 μ•‰μ•„μžˆμœΌλ‹ˆ μƒˆλ‘œ λ“€μ–΄μ˜¨ 인원듀이 λ‚˜λ¨Έμ§€ λ‘κ°œμ˜ λ²€μΉ˜μ— μ–΄λ–»κ²Œ λ‚˜λˆ μ•‰μ•„λ„ K값은 10이닀.

 

λ”°λΌμ„œ K의 μ΅œμ†Ÿκ°’μ€ λ‹€μŒκ³Ό 같이 ꡬ해쀀닀.

K_min = (M + sumation) // N if (M + sumation) % N == 0 else ((M + sumation) // N) + 1

K_min = max(maximum, K_min)

 

파이썬 νŽΈν•΄μ„œ μ’‹κ΅¬λ§Œ..

 

μ½”λ“œ
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
N, M = map(int, input().split())

bench = list(map(int, input().split()))

sumation = sum(bench)
maximum = max(bench)

K_max = maximum + M
K_min = (M + sumation) // N if (M + sumation) % N == 0 else ((M + sumation) // N) + 1

K_min = max(maximum, K_min)

print(K_min, K_max)

'μ½”λ”©ν…ŒμŠ€νŠΈ μ€€λΉ„' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ꡬ름] 놀이곡원 - 파이썬  (0) 2024.11.10
Comments