๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/BOJ

[BOJ] #3366 ์ˆ˜์—ด ์ค„์ด๊ธฐ

by dar0m! 2020. 7. 16.
์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ •๋‹ต ๋น„์œจ
 1์ดˆ  128MB 37.179%
 

3366๋ฒˆ: ์ˆ˜์—ด ์ค„์ด๊ธฐ

๋ฌธ์ œ ์ˆ˜์—ด a1, ..., an์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, reduce(i)๋Š” ai์™€ ai+1๋ฅผ max(ai, ai+1)๋กœ ๋ฐ”๊พธ๋Š” ์—ฐ์‚ฐ์ด๋‹ค. ์ด ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜์—ด์˜ ๊ธธ์ด๋Š” 1๋งŒํผ ์ž‘์•„์ง€๊ฒŒ ๋œ๋‹ค. reduce์—ฐ์‚ฐ์˜ ๋น„์šฉ์€ max(ai, ai+1)๊ณผ ๊ฐ™๋‹ค. ์—ฐ์‚ฐ์„ n-1๏ฟฝ

www.acmicpc.net

 

๋ฌธ์ œ

์ˆ˜์—ด a1, ..., an์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, reduce(i)๋Š” ai์™€ ai+1๋ฅผ max(ai, ai+1)๋กœ ๋ฐ”๊พธ๋Š” ์—ฐ์‚ฐ์ด๋‹ค. ์ด ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜์—ด์˜ ๊ธธ์ด๋Š” 1๋งŒํผ ์ž‘์•„์ง€๊ฒŒ ๋œ๋‹ค.

reduce์—ฐ์‚ฐ์˜ ๋น„์šฉ์€ max(ai, ai+1)๊ณผ ๊ฐ™๋‹ค. ์—ฐ์‚ฐ์„ n-1๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด, ์ˆ˜์—ด์˜ ๊ธธ์ด๋Š” 1์ด ๋œ๋‹ค.

reduce์—ฐ์‚ฐ์„ n-1๋ฒˆ ์‚ฌ์šฉํ•ด์„œ, ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ 1๋กœ ๋งŒ๋“ค ๋•Œ, ์—ฐ์‚ฐ์˜ ๋น„์šฉ์˜ ํ•ฉ์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ฒซ์งธ ์ค„์— ์ˆ˜์—ด์˜ ๊ธธ์ด n(1 ≤ n ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ n๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜์—ด์˜ ์›์†Œ ai๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ ai ≤ 1,000,000,000)

 

ํ•ด๊ฒฐ

key point, stack ํ™œ์šฉ!
  1. reduce ์—ฐ์‚ฐ์˜ ๋น„์šฉ์ด max(ai, ai+1) ์ด๋ฏ€๋กœ ์—ฐ์‚ฐ์˜ ์ตœ์†Ÿ๊ฐ’์€ ๊ฐ€์žฅ ์ž‘์€ ai๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค.
  2. ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜์—ด์„ arr[]์— ์ €์žฅํ•˜๊ณ  ์Šคํƒ์„ stack[] ์ผ๋•Œ
  3. stack์˜ ๊ฐ€์žฅ ์œ„์—์žˆ๋Š” ๊ฐ’๋ณด๋‹ค arr[i] ๊ฐ’์ด ๋” ์ž‘์œผ๋ฉด stack์— ์Œ“๋Š” ๋ฐฉ์‹์œผ๋กœ stack[top-1] ์œ„์น˜์— ์žˆ๋Š” ๊ฐ’์ด ์ˆ˜์—ด์˜ i๋ฒˆ์งธ ๊นŒ์ง€์˜ ์ตœ์†Ÿ๊ฐ’์ž„์„ ๋ณด์žฅํ•œ๋‹ค.
  4. ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” stack[top-1]์— ์œ„์น˜ํ•œ ๊ฐ’๊ณผ reduce์—ฐ์‚ฐ์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์™ผ์ชฝ์— ์œ„์น˜ํ•œ ์›์†Œ์™€ ์—ฐ์‚ฐ ํ• ๊ฒƒ์ธ์ง€, ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•œ ์›์†Œ์™€ ์—ฐ์‚ฐํ• ๊ฒƒ์ธ์ง€ ์ •ํ•ด์•ผํ•œ๋‹ค.
    • ์™ผ์ชฝ์— ์œ„์น˜ํ•œ ์›์†Œ์™€ ์—ฐ์‚ฐ์„ ํ•  ๊ฒฝ์šฐ์—๋Š” stack[top-2]๊ฐ€ arr[i]๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด stack[top-1]์— ์žˆ๋˜ ๊ฐ’๋ณด๋‹ค stack[top-2]์— ์žˆ๋Š” ๊ฐ’์ด ๋‹น์—ฐํžˆ ํฌ๋ฏ€๋กœ ์—ฐ์‚ฐ์˜ ๋น„์šฉ์€ stack[top-2]๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  max๊ฐ’๋งŒ ๋‚จ๊ฒŒ ๋˜๋ฏ€๋กœ stack[top-1]์„ ์ง€์šด๋‹ค๋Š” ์˜๋ฏธ๋กœ top--๋งŒ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
    • ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•œ ์›์†Œ์™€ ์—ฐ์‚ฐ์„ ํ•  ๊ฒฝ์šฐ์—๋Š” ์Šคํƒ์— ์Œ“์•„๋†“์•˜๋˜ ์–ด๋Š ๊ฐ’๋ณด๋‹ค arr[i]๊ฐ’์ด ๋” ์ž‘์„ ๋•Œ์ด๋‹ค. ์ด ๋•Œ๋Š” ์—ฐ์‚ฐ์˜ ๋น„์šฉ์ด arr[i]๊ฐ€ ๋˜๊ณ , ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š” max๊ฐ’๋งŒ ๋‚จ๊ฒŒ ๋˜๋ฏ€๋กœ stack[top-1] ์œ„์น˜์— arr[i]๊ฐ€ ์ €์žฅ๋˜๊ฒŒ ๋œ๋‹ค.
  5. ๋ฐ˜๋ณต๋ฌธ์ด ๋ชจ๋‘ ๋๋‚˜๊ณ  ๋งˆ์ง€๋ง‰์— ์Šคํƒ์— 2๊ฐœ ์ด์ƒ์˜ ๊ฐ’์ด ๋‚จ์•„์žˆ๋‹ค๋ฉด ๊ฑฐ๊พธ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ, ๋‘ ๊ฐœ์˜ ์›์†Œ ์ค‘ ๋” ์Šคํƒ ์•„๋ž˜์— ์žˆ๋Š” ๊ฐ’์„ ์—ฐ์‚ฐ์˜ ๋น„์šฉ์œผ๋กœ ๋”ํ•œ๋‹ค.
  6. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“  ์—ฐ์‚ฐ์˜ ๋น„์šฉ์„ ๋”ํ–ˆ๋˜ ans๋ณ€์ˆ˜๋ฅผ long long ํ˜•์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.
    • ์ˆ˜์—ด์˜ ์›์†Œ๋Š” ์ตœ๋Œ€ 10์–ต์ด๊ณ , ์ˆ˜์—ด์˜ ๊ธธ์ด๋Š” 100๋งŒ ์ด๋ฏ€๋กœ ๊ณ„์†ํ•ด์„œ ๋”ํ•ด๊ฐ€๋ฉด int ๋ฒ”์œ„๋ฅผ ๋„˜๊ธฐ๋•Œ๋ฌธ์— longํ˜•์œผ๋กœ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค.

 

์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„
9796 KB  212 ms

๋Œ“๊ธ€