๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
4๏ธโƒฃ Python/Problem Solving

[Python Algorithm] Q-์ธ๋ฑ์Šค BOJ #13333

by seolhee2750 2022. 2. 10.
๋ฌธ์ œ

https://www.acmicpc.net/problem/13333

 

13333๋ฒˆ: Q-์ธ๋ฑ์Šค

ICPC ๋Œ€ํ•™์˜ ๋ชจ๋“  ๋ฐ•์‚ฌ๊ณผ์ • ํ•™์ƒ์€ ์ž์‹ ์ด ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ๊ณผ ๊ทธ ๋…ผ๋ฌธ๋“ค์˜ ์ธ์šฉํšŸ์ˆ˜๋ฅผ ๊ณ ๋ คํ•œ ํ•™์œ„ ์ทจ๋“ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด, ICPC ๋Œ€ํ•™์€ q-์ธ๋ฑ์Šค๋ผ๋Š” ๊ฐ’์„ ์ •์˜ํ–ˆ๋‹ค. ์ด ์ธ๋ฑ์Šค๋Š” ๋…ผ๋ฌธ

www.acmicpc.net

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
n = int(input())
nums = list(map(int, input().split()))
nums.sort()
m = nums[-1]
q = 0

for i in reversed(range(1, m)):
    tmp = list(filter(lambda x: x >= i, nums))
    if len(tmp) >= i:
        q = i
        break

print(q)

๐Ÿ‘‰ ์ •๋ ฌ ๋ฌธ์ œ

์ด ๋ฌธ์ œ๋Š” ํ’€์ด๋Š” ์–ด๋ ต์ง€ ์•Š์ง€๋งŒ ๋ฌธ์ œ ์ง€๋ฌธ ์ž์ฒด๊ฐ€ ์‚ด์ง ์ด์ƒํ•˜๊ฒŒ ๋‚˜์˜จ ๊ฒƒ ๊ฐ™๋‹ค.

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ๋ง ๊ทธ๋Œ€๋กœ ํ’€์–ด์ฃผ์—ˆ๋”๋‹ˆ ์ž๊พธ ํ‹€๋ ธ๋‹ค๊ณ  ๋‚˜์™”๊ณ , ๋‹ค๋ฅด๊ฒŒ ํ•ด์„ํ•˜์—ฌ ํ‘ธ๋‹ˆ ๋ฐ”๋กœ ๋งž์•˜๋‹ค.

 

'ํ•œ ํ•™์ƒ์ด ๋ฐœํ‘œํ•œ ์ด n ≥ 1 ํŽธ์˜ ๋…ผ๋ฌธ ์ค‘์—์„œ, k๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด kํŽธ ์ด์ƒ์ด๊ณ  ๋‚˜๋จธ์ง€ n − k ํŽธ์˜ ๋…ผ๋ฌธ๋“ค ์ธ์šฉํšŒ์ˆ˜๊ฐ€ ๊ฐ๊ฐ k ๋ฒˆ ์ดํ•˜๋ผ๋ฉด, ํ•ด๋‹น ํ•™์ƒ์˜ q-์ธ๋ฑ์Šค๋Š” k์ด๋‹ค.'

์ด ๋ถ€๋ถ„์„

'ํ•œ ํ•™์ƒ์ด ๋ฐœํ‘œํ•œ ์ด nํŽธ์˜ ๋…ผ๋ฌธ ์ค‘์—์„œ, k๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด kํŽธ ์ด์ƒ์ด๊ณ  ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ๋“ค์€ ์ธ์šฉ ํšŸ์ˆ˜๊ฐ€ k๋ฒˆ ์ดํ•˜๋ผ๋ฉด, ํ•ด๋‹น ํ•™์ƒ์˜ q-์ธ๋ฑ์Šค๋Š” k์ด๋‹ค.'

์ด๋ ‡๊ฒŒ ๋ฐ”๊ฟ”์ค˜์•ผ ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

๋ฌธ์ œ ํ’€์ด

  • ์ฃผ์–ด์ง„ ์ธ์šฉ ํšŸ์ˆ˜๋“ค์„ nums ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ›์€ ํ›„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ–ˆ๊ณ , ๊ทธ ์ค‘ ์ œ์ผ ํฐ ์ˆ˜๋ฅผ m์— ์ €์žฅํ–ˆ๋‹ค.
  • ๊ฐ€์žฅ ํฐ ์ˆ˜ m๋ถ€ํ„ฐ 1๊นŒ์ง€ ๊ฑฐ๊พธ๋กœ ๋ฐ˜๋ณตํ•˜๋ฉฐ i ์ด์ƒ์˜ ์ˆ˜๋“ค์„ ๋‹ด์€ tmp ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ ,
    tmp ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ i ์ด์ƒ์ผ ๊ฒฝ์šฐ k๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด kํŽธ ์ด์ƒ์ด๋ผ๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ์ข…๋ฃŒํ–ˆ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ๋ฌธ์ œ ์ดํ•ด ์ž์ฒด๊ฐ€ ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ๊ฐ™๋‹ค.
  • filter๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค.

๋Œ“๊ธ€