๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[BAEKJOON C++] 23291_์–ดํ•ญ ์ •๋ฆฌ ๋ณธ๋ฌธ

๐Ÿฆฅ ์ฝ”ํ…Œ/BAEKJOON

[BAEKJOON C++] 23291_์–ดํ•ญ ์ •๋ฆฌ

์ง•์ง•์•ŒํŒŒ์นด 2023. 8. 18. 13:59
728x90
๋ฐ˜์‘ํ˜•
๐Ÿ’› ๋ฌธ์ œ
๋งˆ๋ฒ•์‚ฌ ์ƒ์–ด๋Š” ๊ทธ๋™์•ˆ ๋ฐฐ์šด ๋งˆ๋ฒ•์„ ์ด์šฉํ•ด ์–ดํ•ญ์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. 
์–ดํ•ญ์€ ์ •์œก๋ฉด์ฒด ๋ชจ์–‘์ด๊ณ , ํ•œ ๋ณ€์˜ ๊ธธ์ด๋Š” ๋ชจ๋‘ 1์ด๋‹ค. 
์ƒ์–ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์–ดํ•ญ์€ N๊ฐœ์ด๊ณ , ๊ฐ€์žฅ ์ฒ˜์Œ์— ์–ดํ•ญ์€ ์ผ๋ ฌ๋กœ ๋ฐ”๋‹ฅ ์œ„์— ๋†“์—ฌ์ ธ ์žˆ๋‹ค. 
์–ดํ•ญ์—๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ํ•œ ๋งˆ๋ฆฌ ์ด์ƒ ๋“ค์–ด์žˆ๋‹ค. 

<๊ทธ๋ฆผ 1>์€ ์–ดํ•ญ 8๊ฐœ๊ฐ€ ๋ฐ”๋‹ฅ ์œ„์— ๋†“์—ฌ์žˆ๋Š” ์ƒํƒœ์ด๋ฉฐ, 
์นธ์— ์ ํžŒ ๊ฐ’์€ ๊ทธ ์–ดํ•ญ์— ๋“ค์–ด์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜์ด๋‹ค. ํŽธ์˜์ƒ ์–ดํ•ญ์€ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ํ‘œํ˜„ํ–ˆ๋‹ค.
=> 5, 2, 3, 14, 9, 2, 11, 8

์–ดํ•ญ์„ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๋จผ์ €, ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์–ดํ•ญ์— ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ•œ ๋งˆ๋ฆฌ ๋„ฃ๋Š”๋‹ค.
๋งŒ์•ฝ, ๊ทธ๋Ÿฌํ•œ ์–ดํ•ญ์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋ฉด ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ์ตœ์†Œ์ธ ์–ดํ•ญ ๋ชจ๋‘์— ํ•œ ๋งˆ๋ฆฌ์”ฉ ๋„ฃ๋Š”๋‹ค. 
์œ„์˜ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์–ดํ•ญ์—๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ 2๋งˆ๋ฆฌ ์žˆ๊ณ , ๊ทธ๋Ÿฌํ•œ ์–ดํ•ญ์€ 2๊ฐœ๊ฐ€ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ, 2๊ฐœ์˜ ์–ดํ•ญ์— ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ•œ ๋งˆ๋ฆฌ์”ฉ ๋„ฃ์–ด <๊ทธ๋ฆผ 2>์™€ ๊ฐ™์•„์ง„๋‹ค.
=> 5, 3, 3, 14, 9, 3, 11, 8

์ด์ œ ์–ดํ•ญ์„ ์Œ“๋Š”๋‹ค. ๋จผ์ €, ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์„ ๊ทธ ์–ดํ•ญ์˜ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์œ„์— ์˜ฌ๋ ค ๋†“์•„ <๊ทธ๋ฆผ 3>์ด ๋œ๋‹ค.
=> 5, 
=> 3, 3, 14, 9, 3, 11, 8

์ด์ œ, 2๊ฐœ ์ด์ƒ ์Œ“์—ฌ์žˆ๋Š” ์–ดํ•ญ์„ ๋ชจ๋‘ ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ๋‹ค์Œ, ์ „์ฒด๋ฅผ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ 90๋„ ํšŒ์ „์‹œํ‚จ๋‹ค. 
์ดํ›„ ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ์–ดํ•ญ์„ ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์œ„์— ์˜ฌ๋ ค๋†“๋Š”๋‹ค. 
=> 3, 5, 
=> 3, 14, 9, 3, 11, 8
๋ฐ”๋‹ฅ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ ์œ„์— ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ์–ดํ•ญ ์ค‘ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. 
์ด ์ž‘์—…์€ ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ์–ดํ•ญ ์ค‘ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์•„๋ž˜์— ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ์–ดํ•ญ์ด ์žˆ์„๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
๋จผ์ €, <๊ทธ๋ฆผ 4>์™€ ๊ฐ™์ด ์–ดํ•ญ์ด ๋†“์ธ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜๊ณ , ํ•œ ๋ฒˆ ๋” ๋ณ€ํ•ด์„œ <๊ทธ๋ฆผ 5>๊ฐ€ ๋œ๋‹ค.
=> 3, 3, 
=> 14, 5, 
=> 9, 3, 11, 8

<๊ทธ๋ฆผ 5>์—์„œ ํ•œ ๋ฒˆ ๋” ์–ดํ•ญ์„ ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 
๊ทธ ์ด์œ ๋Š” <๊ทธ๋ฆผ 6>๊ณผ ๊ฐ™์ด ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ์–ดํ•ญ ์ค‘ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์•„๋ž˜์— ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ์–ดํ•ญ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
=> 9, 14, 3
=> 3, 5, 3
=> 11, 8

๊ณต์ค‘ ๋ถ€์–‘ ์ž‘์—…์ด ๋ชจ๋‘ ๋๋‚˜๋ฉด, ์–ดํ•ญ์— ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๋ฅผ ์กฐ์ ˆํ•œ๋‹ค.
๋ชจ๋“  ์ธ์ ‘ํ•œ ๋‘ ์–ดํ•ญ์— ๋Œ€ํ•ด์„œ, ๋ฌผ๊ณ ๊ธฐ ์ˆ˜์˜ ์ฐจ์ด๋ฅผ ๊ตฌํ•œ๋‹ค. 
์ด ์ฐจ์ด๋ฅผ 5๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ d๋ผ๊ณ  ํ•˜์ž. d๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด, ๋‘ ์–ดํ•ญ ์ค‘ ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ณณ์— ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ d ๋งˆ๋ฆฌ๋ฅผ ์ ์€ ๊ณณ์— ์žˆ๋Š” ๊ณณ์œผ๋กœ ๋ณด๋‚ธ๋‹ค.
์ด ๊ณผ์ •์€ ๋ชจ๋“  ์ธ์ ‘ํ•œ ์นธ์— ๋Œ€ํ•ด์„œ ๋™์‹œ์— ๋ฐœ์ƒํ•œ๋‹ค. ์ด ๊ณผ์ •์ด ์™„๋ฃŒ๋˜๋ฉด <๊ทธ๋ฆผ 7>์ด ๋œ๋‹ค.
=> 5, 3
=> 10, 6
=> 9, 5, 10, 8

์ด์ œ ๋‹ค์‹œ ์–ดํ•ญ์„ ๋ฐ”๋‹ฅ์— ์ผ๋ ฌ๋กœ ๋†“์•„์•ผ ํ•œ๋‹ค. ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ๋ถ€ํ„ฐ, ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์— ์žˆ๋Š” ์–ดํ•ญ๋ถ€ํ„ฐ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์–ดํ•ญ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”๋‹ฅ์— ๋†“์•„์•ผ ํ•œ๋‹ค. 
<๊ทธ๋ฆผ 8>์ด ๋ฐ”๋‹ฅ์— ๋‹ค์‹œ ์ผ๋ ฌ๋กœ ๋†“์€ ์ƒํƒœ์ด๋‹ค.
=> 9, 10, 5, 5, 6, 3, 10, 8

๋‹ค์‹œ ๊ณต์ค‘ ๋ถ€์–‘ ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ฐ€์šด๋ฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์™ผ์ชฝ N/2๊ฐœ๋ฅผ ๊ณต์ค‘ ๋ถ€์–‘์‹œ์ผœ ์ „์ฒด๋ฅผ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 180๋„ ํšŒ์ „ ์‹œํ‚จ ๋‹ค์Œ, 
์˜ค๋ฅธ์ชฝ N/2๊ฐœ์˜ ์œ„์— ๋†“์•„์•ผ ํ•œ๋‹ค. ์ด ์ž‘์—…์€ ๋‘ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์•ผํ•œ๋‹ค. 
๋‘ ๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์ˆ˜๋Š” N/4๊ฐœ๊ฐ€ ๋œ๋‹ค. 
<๊ทธ๋ฆผ 9>๋Š” ์ด ์ž‘์—…์„ 1๋ฒˆ ํ–ˆ์„ ๋•Œ, <๊ทธ๋ฆผ 10>์€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋” ํ–ˆ์„ ๋•Œ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ์œ„์—์„œ ํ•œ ๋ฌผ๊ณ ๊ธฐ ์กฐ์ ˆ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ฐ”๋‹ฅ์— ์ผ๋ ฌ๋กœ ๋†“๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. <๊ทธ๋ฆผ 10>์—์„œ ์กฐ์ ˆ ์ž‘์—…์„ ๋งˆ์นœ ๊ฒฐ๊ณผ๋Š” <๊ทธ๋ฆผ 11>์ด ๋˜๊ณ , 
์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ๋ฐ”๋‹ฅ์— ์ผ๋ ฌ๋กœ ๋†“๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด <๊ทธ๋ฆผ 12>๊ฐ€ ๋œ๋‹ค.

์–ดํ•ญ์˜ ์ˆ˜ N, ๊ฐ ์–ดํ•ญ์— ๋“ค์–ด์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 
๋ฌผ๊ณ ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์–ด์žˆ๋Š” ์–ดํ•ญ๊ณผ ๊ฐ€์žฅ ์ ๊ฒŒ ๋“ค์–ด์žˆ๋Š” ์–ดํ•ญ์˜ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ์ฐจ์ด๊ฐ€ K ์ดํ•˜๊ฐ€ ๋˜๋ ค๋ฉด ์–ดํ•ญ์„ ๋ช‡ ๋ฒˆ ์ •๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ๊ตฌํ•ด๋ณด์ž.

๐Ÿ’š ์ž…๋ ฅ
์ฒซ์งธ ์ค„์— N, K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 
๋‘˜์งธ์—๋Š” ์–ดํ•ญ์— ๋“ค์–ด์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.

๐Ÿ’™ ์ถœ๋ ฅ
๋ฌผ๊ณ ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์–ด์žˆ๋Š” ์–ดํ•ญ๊ณผ ๊ฐ€์žฅ ์ ๊ฒŒ ๋“ค์–ด์žˆ๋Š” ์–ดํ•ญ์˜ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ์ฐจ์ด๊ฐ€ K ์ดํ•˜๊ฐ€ ๋˜๋ ค๋ฉด 
์–ดํ•ญ์„ ๋ช‡ ๋ฒˆ ์ •๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.
"""
[23291] ์–ดํ•ญ ์ •๋ฆฌ

๐Ÿ’› ๋ฌธ์ œ
๋งˆ๋ฒ•์‚ฌ ์ƒ์–ด๋Š” ๊ทธ๋™์•ˆ ๋ฐฐ์šด ๋งˆ๋ฒ•์„ ์ด์šฉํ•ด ์–ดํ•ญ์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. 
์–ดํ•ญ์€ ์ •์œก๋ฉด์ฒด ๋ชจ์–‘์ด๊ณ , ํ•œ ๋ณ€์˜ ๊ธธ์ด๋Š” ๋ชจ๋‘ 1์ด๋‹ค. 
์ƒ์–ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์–ดํ•ญ์€ N๊ฐœ์ด๊ณ , ๊ฐ€์žฅ ์ฒ˜์Œ์— ์–ดํ•ญ์€ ์ผ๋ ฌ๋กœ ๋ฐ”๋‹ฅ ์œ„์— ๋†“์—ฌ์ ธ ์žˆ๋‹ค. 
์–ดํ•ญ์—๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ํ•œ ๋งˆ๋ฆฌ ์ด์ƒ ๋“ค์–ด์žˆ๋‹ค. 

<๊ทธ๋ฆผ 1>์€ ์–ดํ•ญ 8๊ฐœ๊ฐ€ ๋ฐ”๋‹ฅ ์œ„์— ๋†“์—ฌ์žˆ๋Š” ์ƒํƒœ์ด๋ฉฐ, 
์นธ์— ์ ํžŒ ๊ฐ’์€ ๊ทธ ์–ดํ•ญ์— ๋“ค์–ด์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜์ด๋‹ค. ํŽธ์˜์ƒ ์–ดํ•ญ์€ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ํ‘œํ˜„ํ–ˆ๋‹ค.
=> 5, 2, 3, 14, 9, 2, 11, 8

์–ดํ•ญ์„ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๋จผ์ €, ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์–ดํ•ญ์— ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ•œ ๋งˆ๋ฆฌ ๋„ฃ๋Š”๋‹ค.
๋งŒ์•ฝ, ๊ทธ๋Ÿฌํ•œ ์–ดํ•ญ์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋ฉด ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ์ตœ์†Œ์ธ ์–ดํ•ญ ๋ชจ๋‘์— ํ•œ ๋งˆ๋ฆฌ์”ฉ ๋„ฃ๋Š”๋‹ค. 
์œ„์˜ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์–ดํ•ญ์—๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ 2๋งˆ๋ฆฌ ์žˆ๊ณ , ๊ทธ๋Ÿฌํ•œ ์–ดํ•ญ์€ 2๊ฐœ๊ฐ€ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ, 2๊ฐœ์˜ ์–ดํ•ญ์— ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ•œ ๋งˆ๋ฆฌ์”ฉ ๋„ฃ์–ด <๊ทธ๋ฆผ 2>์™€ ๊ฐ™์•„์ง„๋‹ค.
=> 5, 3, 3, 14, 9, 3, 11, 8

์ด์ œ ์–ดํ•ญ์„ ์Œ“๋Š”๋‹ค. ๋จผ์ €, ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์„ ๊ทธ ์–ดํ•ญ์˜ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์œ„์— ์˜ฌ๋ ค ๋†“์•„ <๊ทธ๋ฆผ 3>์ด ๋œ๋‹ค.
=> 5, 
=> 3, 3, 14, 9, 3, 11, 8

์ด์ œ, 2๊ฐœ ์ด์ƒ ์Œ“์—ฌ์žˆ๋Š” ์–ดํ•ญ์„ ๋ชจ๋‘ ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ๋‹ค์Œ, ์ „์ฒด๋ฅผ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ 90๋„ ํšŒ์ „์‹œํ‚จ๋‹ค. 
์ดํ›„ ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ์–ดํ•ญ์„ ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์œ„์— ์˜ฌ๋ ค๋†“๋Š”๋‹ค. 
=> 3, 5, 
=> 3, 14, 9, 3, 11, 8
๋ฐ”๋‹ฅ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ ์œ„์— ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ์–ดํ•ญ ์ค‘ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. 
์ด ์ž‘์—…์€ ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ์–ดํ•ญ ์ค‘ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์•„๋ž˜์— ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ์–ดํ•ญ์ด ์žˆ์„๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
๋จผ์ €, <๊ทธ๋ฆผ 4>์™€ ๊ฐ™์ด ์–ดํ•ญ์ด ๋†“์ธ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜๊ณ , ํ•œ ๋ฒˆ ๋” ๋ณ€ํ•ด์„œ <๊ทธ๋ฆผ 5>๊ฐ€ ๋œ๋‹ค.
=> 3, 3, 
=> 14, 5, 
=> 9, 3, 11, 8

<๊ทธ๋ฆผ 5>์—์„œ ํ•œ ๋ฒˆ ๋” ์–ดํ•ญ์„ ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 
๊ทธ ์ด์œ ๋Š” <๊ทธ๋ฆผ 6>๊ณผ ๊ฐ™์ด ๊ณต์ค‘ ๋ถ€์–‘์‹œํ‚จ ์–ดํ•ญ ์ค‘ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์•„๋ž˜์— ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ์–ดํ•ญ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
=> 9, 14, 3
=> 3, 5, 3
=> 11, 8

๊ณต์ค‘ ๋ถ€์–‘ ์ž‘์—…์ด ๋ชจ๋‘ ๋๋‚˜๋ฉด, ์–ดํ•ญ์— ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๋ฅผ ์กฐ์ ˆํ•œ๋‹ค.
๋ชจ๋“  ์ธ์ ‘ํ•œ ๋‘ ์–ดํ•ญ์— ๋Œ€ํ•ด์„œ, ๋ฌผ๊ณ ๊ธฐ ์ˆ˜์˜ ์ฐจ์ด๋ฅผ ๊ตฌํ•œ๋‹ค. 
์ด ์ฐจ์ด๋ฅผ 5๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ d๋ผ๊ณ  ํ•˜์ž. d๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด, ๋‘ ์–ดํ•ญ ์ค‘ ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ณณ์— ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ d ๋งˆ๋ฆฌ๋ฅผ ์ ์€ ๊ณณ์— ์žˆ๋Š” ๊ณณ์œผ๋กœ ๋ณด๋‚ธ๋‹ค.
์ด ๊ณผ์ •์€ ๋ชจ๋“  ์ธ์ ‘ํ•œ ์นธ์— ๋Œ€ํ•ด์„œ ๋™์‹œ์— ๋ฐœ์ƒํ•œ๋‹ค. ์ด ๊ณผ์ •์ด ์™„๋ฃŒ๋˜๋ฉด <๊ทธ๋ฆผ 7>์ด ๋œ๋‹ค.
=> 5, 3
=> 10, 6
=> 9, 5, 10, 8

์ด์ œ ๋‹ค์‹œ ์–ดํ•ญ์„ ๋ฐ”๋‹ฅ์— ์ผ๋ ฌ๋กœ ๋†“์•„์•ผ ํ•œ๋‹ค. ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ๋ถ€ํ„ฐ, ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์— ์žˆ๋Š” ์–ดํ•ญ๋ถ€ํ„ฐ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์–ดํ•ญ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”๋‹ฅ์— ๋†“์•„์•ผ ํ•œ๋‹ค. 
<๊ทธ๋ฆผ 8>์ด ๋ฐ”๋‹ฅ์— ๋‹ค์‹œ ์ผ๋ ฌ๋กœ ๋†“์€ ์ƒํƒœ์ด๋‹ค.
=> 9, 10, 5, 5, 6, 3, 10, 8

๋‹ค์‹œ ๊ณต์ค‘ ๋ถ€์–‘ ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ฐ€์šด๋ฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์™ผ์ชฝ N/2๊ฐœ๋ฅผ ๊ณต์ค‘ ๋ถ€์–‘์‹œ์ผœ ์ „์ฒด๋ฅผ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 180๋„ ํšŒ์ „ ์‹œํ‚จ ๋‹ค์Œ, 
์˜ค๋ฅธ์ชฝ N/2๊ฐœ์˜ ์œ„์— ๋†“์•„์•ผ ํ•œ๋‹ค. ์ด ์ž‘์—…์€ ๋‘ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์•ผํ•œ๋‹ค. 
๋‘ ๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ฐ”๋‹ฅ์— ์žˆ๋Š” ์–ดํ•ญ์˜ ์ˆ˜๋Š” N/4๊ฐœ๊ฐ€ ๋œ๋‹ค. 
<๊ทธ๋ฆผ 9>๋Š” ์ด ์ž‘์—…์„ 1๋ฒˆ ํ–ˆ์„ ๋•Œ, <๊ทธ๋ฆผ 10>์€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋” ํ–ˆ์„ ๋•Œ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ์œ„์—์„œ ํ•œ ๋ฌผ๊ณ ๊ธฐ ์กฐ์ ˆ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ฐ”๋‹ฅ์— ์ผ๋ ฌ๋กœ ๋†“๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. <๊ทธ๋ฆผ 10>์—์„œ ์กฐ์ ˆ ์ž‘์—…์„ ๋งˆ์นœ ๊ฒฐ๊ณผ๋Š” <๊ทธ๋ฆผ 11>์ด ๋˜๊ณ , 
์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ๋ฐ”๋‹ฅ์— ์ผ๋ ฌ๋กœ ๋†“๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด <๊ทธ๋ฆผ 12>๊ฐ€ ๋œ๋‹ค.

์–ดํ•ญ์˜ ์ˆ˜ N, ๊ฐ ์–ดํ•ญ์— ๋“ค์–ด์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 
๋ฌผ๊ณ ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์–ด์žˆ๋Š” ์–ดํ•ญ๊ณผ ๊ฐ€์žฅ ์ ๊ฒŒ ๋“ค์–ด์žˆ๋Š” ์–ดํ•ญ์˜ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ์ฐจ์ด๊ฐ€ K ์ดํ•˜๊ฐ€ ๋˜๋ ค๋ฉด ์–ดํ•ญ์„ ๋ช‡ ๋ฒˆ ์ •๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ๊ตฌํ•ด๋ณด์ž.

๐Ÿ’š ์ž…๋ ฅ
์ฒซ์งธ ์ค„์— N, K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 
๋‘˜์งธ์—๋Š” ์–ดํ•ญ์— ๋“ค์–ด์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ์–ดํ•ญ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.

๐Ÿ’™ ์ถœ๋ ฅ
๋ฌผ๊ณ ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์–ด์žˆ๋Š” ์–ดํ•ญ๊ณผ ๊ฐ€์žฅ ์ ๊ฒŒ ๋“ค์–ด์žˆ๋Š” ์–ดํ•ญ์˜ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ์ฐจ์ด๊ฐ€ K ์ดํ•˜๊ฐ€ ๋˜๋ ค๋ฉด 
์–ดํ•ญ์„ ๋ช‡ ๋ฒˆ ์ •๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.
"""

from collections import deque
import sys

# ์–ดํ•ญ์˜ ์ˆ˜ N, ๊ฐ ์–ดํ•ญ์— ๋“ค์–ด์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜ K
n, k = map(int, sys.stdin.readline().split())
direction = [(-1, 0), (1, 0), (0, -1), (0, 1)]
board = list()

# [deque([5, 2, 3, 14, 9, 2, 11, 8])]
board.append(deque(list(map(int, sys.stdin.readline().split()))))

# ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์–ดํ•ญ์— ๋ฌผ๊ณ ๊ธฐ ํ•œ ๋งˆ๋ฆฌ ๋„ฃ๊ธฐ
def push_fish(graph) :
    min_bowl_fish_num = min(graph[0])

    for i in range(len(graph[0])):
        if graph[0][i] == min_bowl_fish_num:
            # ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์–ดํ•ญ์— ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ•œ ๋งˆ๋ฆฌ ๋„ฃ๋Š”๋‹ค
            graph[0][i] += 1

# ๊ฐ€์žฅ ์™ผ์ชฝ์˜ ์–ดํ•ญ์„ ์œ„์— ์Œ“๊ธฐ
def popleft_stack(graph) :
    pop = graph[0].popleft()
    graph.append(deque([pop]))

# ๊ณต์ค‘์— ๋œฌ ์–ดํ•ญ๋“ค ์‹œ๊ณ„๋ฐฉํ–ฅ 90๋„ ํšŒ์ „
def rotate_90_clock(bowls) :
    new_bowls = [[0] * len(bowls) for _ in range(len(bowls[0]))]

    for i in range(len(bowls[0])):
        for j in range(len(bowls)):
            new_bowls[i][j] = bowls[j][len(bowls[0])-1-i]

    return new_bowls
    
# 2๊ฐœ ์ด์ƒ ์Œ“์ธ ์–ดํ•ญ๋“ค ๋ถ„๋ฆฌํ•ด์„œ ๊ณต์ค‘๋ถ€์–‘
def fly_bowls(graph) :
    while True :
        if len(graph) > len(graph[0]) - len(graph[-1]) :
            break

        will_fly = []
        will_fly_row = len(graph)
        will_fly_col = len(graph[-1])

        for i in range(will_fly_row) :
            new_deque = deque()

            for _ in range(will_fly_col) :
                new_deque.append(graph[i].popleft())

            will_fly.append(new_deque)

        graph = [graph[0]]

        rotated_bowls = rotate_90_clock(will_fly)
        for r in rotated_bowls :
            graph.append(deque(r))
    return graph

# ์–ดํ•ญ์˜ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ์กฐ์ ˆ
def fix_fish_num (graph) :
    dp = [[0] * len(graph[x]) for x in range(len(graph))]

    for x in range(len(graph)) :
        for y in range(len(graph[x])) :
            for d in direction :
                nx = x + d[0]
                ny = y + d[1]
                # ๋ชจ๋“  ์ธ์ ‘ํ•œ ๋‘ ์–ดํ•ญ์— ๋Œ€ํ•ด์„œ, ๋ฌผ๊ณ ๊ธฐ ์ˆ˜์˜ ์ฐจ์ด๋ฅผ ๊ตฌํ•œ๋‹ค. 
                # ์ด ์ฐจ์ด๋ฅผ 5๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ d
                # d๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด, ๋‘ ์–ดํ•ญ ์ค‘ ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ณณ์— ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ d ๋งˆ๋ฆฌ๋ฅผ ์ ์€ ๊ณณ์— ์žˆ๋Š” ๊ณณ์œผ๋กœ ๋ณด๋‚ธ๋‹ค.
                # ์ด ๊ณผ์ •์€ ๋ชจ๋“  ์ธ์ ‘ํ•œ ์นธ์— ๋Œ€ํ•ด์„œ ๋™์‹œ์— ๋ฐœ์ƒ
                if 0 <= nx < len(graph) and 0 <= ny < len(graph[nx]) :
                    # ํ˜„์žฌ ์นธ์ด ๋” ํฌ๋‹ค๋ฉด
                    if graph[x][y] > graph[nx][ny]:
                        d = (graph[x][y] - graph[nx][ny]) // 5
                        if d >= 1:
                            dp[x][y] -= d
                    else:
                        d = (graph[nx][ny] - graph[x][y]) // 5
                        if d >= 1:
                            dp[x][y] += d

    for i in range(len(graph)):
        for j in range(len(graph[i])):
            graph[i][j] += dp[i][j]


# ์–ดํ•ญ ์ผ๋ ฌ๋กœ ๋†“๊ธฐ
def bowl_row (graph) :
    new_graph = deque()

    for i in range(len(graph[-1])):
        for j in range(len(graph)):
            new_graph.append(graph[j][i])

    for i in range(len(graph[-1]), len(graph[0])):
        new_graph.append(graph[0][i])

    result_list = list()
    result_list.append(new_graph)

    return result_list

# 180๋„ ํšŒ์ „
def rotate_180 (graph) :
    new_graph = []

    for i in reversed(range(len(graph))):
        graph[i].reverse()
        new_graph.append(graph[i])

    return new_graph


# ๋‹ค์‹œ ๊ณต์ค‘๋ถ€์–‘ (์ ˆ๋ฐ˜ ์ž๋ฅด๋Š”๋ฐ 2๋ฒˆ ํ•˜๊ธฐ)
def fly_bowls2 (graph) :
    left1 = list()
    left2 = list()
    new_deque1 = deque()

    for i in range(n//2):
        new_deque1.append(graph[0].popleft())
    left1.append(new_deque1)

    rotated_left1 = rotate_180(left1)
    graph += rotated_left1

    for i in range(2):
        temp_deque = deque()
        for j in range(n//4):
            temp_deque.append(graph[i].popleft())
        left2.append(temp_deque)

    rotated_left2 = rotate_180(left2)
    graph += rotated_left2


# ๋ฌผ๊ณ ๊ธฐ ๊ฐ€์žฅ ๋งŽ์€ ์–ดํ•ญ๊ณผ ๊ฐ€์žฅ ์ ์€ ์–ดํ•ญ์˜ ์ฐจ์ด
def get_result(graph):
    dq = graph[0]
    result1 = max(dq) - min(dq)
    
    return result1

answer = 0
while True :
    result = get_result(board)

    if result <= k :
        print(answer)
        break

    push_fish(board)
    popleft_stack(board)
    board = fly_bowls(board)

    fix_fish_num(board)
    board = bowl_row(board)

    fly_bowls2(board)
    fix_fish_num(board)
    board = bowl_row(board)
    answer += 1

728x90
๋ฐ˜์‘ํ˜•

'๐Ÿฆฅ ์ฝ”ํ…Œ > BAEKJOON' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BAEKJOON C++] 14501_ํ‡ด์‚ฌ  (0) 2023.08.19
[BAEKJOON C++] 13458_์‹œํ—˜ ๊ฐ๋…  (0) 2023.08.19
[BAEKJOON C++] 10773_์ œ๋กœ  (0) 2023.08.17
[BAEKJOON C++] 5800_์„ฑ์  ํ†ต๊ณ„  (0) 2023.08.17
[BAEKJOON C++] 11655_ROT13  (0) 2023.08.17
Comments