ALGORITHM ๐Ÿค–/Baekjoon

๋ฐฑ์ค€ - 20546

daxx0ne 2023. 11. 6. 13:28

๋ฌธ์ œ ๋งํฌ

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

 

20546๋ฒˆ: ๐Ÿœ ๊ธฐ์ ์˜ ๋งค๋งค๋ฒ• ๐Ÿœ

1์›” 14์ผ ๊ธฐ์ค€ ์ค€ํ˜„์ด์˜ ์ž์‚ฐ์ด ๋” ํฌ๋‹ค๋ฉด "BNP"๋ฅผ, ์„ฑ๋ฏผ์ด์˜ ์ž์‚ฐ์ด ๋” ํฌ๋‹ค๋ฉด "TIMING"์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‘˜์˜ ์ž์‚ฐ์ด ๊ฐ™๋‹ค๋ฉด "SAMESAME"์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋ชจ๋“  ๊ฒฐ๊ณผ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

ํ’€๊ธฐ ์ „์— ์•„์ด๋””์–ด

๊ธฐ์ ์˜ ๋งค๋งค๋ฒ• ๋ฌธ์ œ๋Š” ์ค€ํ˜„์ด์™€ ์„ฑ๋ฏผ์ด์˜ ๊ฐ ๋งค๋งค๋ฒ•์ธ BNP, Timing ์ค‘ ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ๋” ์ˆ˜์ต๋ฅ ์ด ๋†’์€ ์ง€๋ฅผ ๋”ฐ์ ธ๋ณด๋Š” ๋ฌธ์ œ์˜€๋‹ค.

์ฃผ์‹์€ ํ•˜๋‚˜๋กœ ์ •ํ•ด์ ธ์žˆ๊ณ , ํ˜„๊ธˆ๊ณผ 14์ผ ๋™์•ˆ์˜ ์ฃผ๊ฐ€๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ ๋” ์ˆ˜์ต์ด ๋†’์€ ๋งค๋งค๋ฒ•์„ ์ถœ๋ ฅํ•˜๊ณ  ๊ฐ™์œผ๋ฉด ๊ฐ™๋‹ค๊ณ  ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

 

๋ฌธ์ œ๊ฐ€ ์ƒ๋‹นํžˆ ๊ธธ์–ด์„œ ๋‚œ๋…์ฆ ์™€๊ฐ€์ง€๊ณ  ํ•˜.. ์ด๊ฒŒ ๋ญ” ์†Œ๋ฆฐ์ง€ ์ดํ•ดํ•˜๋Š”์ง€ ์ข€ ๊ฑธ๋ ธ๋‹ค. ใ…‹ใ…‹ใ…‹ใ…‹ (์ฑ…์„ ๋งŽ์ด ์ฝ์ž..)

 

 

ํ•˜์—ฌํŠผ ์ด ๋ฌธ์ œ์—์„œ ์ข€ ์œ ์‹ฌํžˆ ๋ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ๊ฐ ๋งค๋งค๋ฒ•์ด ์–ด๋–ค ์‹์œผ๋กœ ๋งค๋งค๋ฅผ ํ•  ๊ฒƒ์ธ๊ฐ€์˜€๋‹ค.

 

์ค€ํ˜„์ด์˜ ๋งค๋งค๋ฒ•์ธ BNP ๋ฐฉ๋ฒ•์€ ์ž์‹ ์ด ๋ณด์œ ํ•œ ํ˜„๊ธˆ์œผ๋กœ ์ฃผ์‹์„ ์‚ด ์ˆ˜ ์žˆ์„ ๋•Œ ์ตœ๋Œ€ํ•œ ๋‹ค ์‚ฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ฒซ ๋‚ ๋ถ€ํ„ฐ ์‚ด ์ˆ˜ ์žˆ์œผ๋ฉด ์‚ด ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๋‹ค ์‚ฌ๊ณ , ๋‹ค์Œ ๋‚ ์—๋„ ์‚ด ์ˆ˜ ์žˆ์„ ๋งŒํผ ํ˜„๊ธˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉด ํ’€ ๋งค์ˆ˜๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค. ์–ด์จŒ๋“  ๊ทธ๋ƒฅ ๋ฌด์ง€์„ฑ ํ’€ ๋งค์ˆ˜ ๋ฐฉ๋ฒ•! ๊ทธ๋ฆฌ๊ณ  ๋ฌด์กฐ๊ฑด ๋งˆ์ง€๋ง‰ ๋‚ ์ธ 14์ผ์— ํ’€๋งค๋„!

 

 

์„ฑ๋ฏผ์ด์˜ ๋งค๋งค๋ฒ•์ธ Timing ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ ๊นŒ๋‹ค๋กœ์› ๋‹ค. ์–˜๋„ ํ’€ ๋งค์ˆ˜ ํ’€ ๋งค๋„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ๋ฐ, BNP์™€ ๋‹ค๋ฅธ ์ ์€ ์‚ด ์ˆ˜ ์žˆ์„ ๋•Œ ๋‹ค ์‚ฌ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ  1~14์ผ ์ฃผ๊ฐ€๋ฅผ ๋ณด๋ฉด 3์ผ ์—ฐ์† ๊ฐ€๊ฒฉ์ด ์ƒ์Šนํ•˜๋ฉด ๋‹ค์Œ๋‚  ๋ฌด์กฐ๊ฑด ๊ฐ€๊ฒฉ์ด ํ•˜๋ฝํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ 3์ผ ์—ฐ์† ๊ฐ€๊ฒฉ์ด ํ•˜๋ฝํ•˜๋ฉด ๋‹ค์Œ๋‚  ๋ฌด์กฐ๊ฑด ๊ฐ€๊ฒฉ์ด ์ƒ์Šนํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์ด๋Ÿฐ ํƒ€์ด๋ฐ์—์„œ ํ’€ ๋งค๋„, ํ’€ ๋งค์ˆ˜๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ „์ผ ๋Œ€๋น„ ๊ฐ€๊ฒฉ์ด ๊ฐ™๋‹ค๋ฉด ๊ฐ€๊ฒฉ์ด ์ƒ์Šนํ•˜๊ฑฐ๋‚˜ ํ•˜๋ฝํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ๋„ ํฌ์ธํŠธ์˜€๋‹ค.

 

 

๋‘˜์˜ ์ž์‚ฐ์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ž์‚ฐ์€ (ํ˜„๊ธˆ + 1์›” 14์ผ์˜ ์ฃผ๊ฐ€ * ์ฃผ์‹ ์ˆ˜)๋กœ ๊ณ„์‚ฐํ•˜๋ฉด ๋œ๋‹ค.

 

๊ณผ์ •

์ž ์ด์ œ ๋Š˜ ํ•˜๋˜๋Œ€๋กœ BufferReader, StringTokenizer๋ฅผ ํ†ตํ•ด ํ˜„๊ธˆ๊ณผ 14์ผ ๋™์•ˆ์˜ ์ฃผ๊ฐ€๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ฃผ๊ฐ€๋Š” ๋ฐฐ์—ด์— ์ €์žฅํ•˜๋„๋ก ํ–ˆ๋‹ค.

์ด์ œ BNP ๋ฐฉ๋ฒ•๊ณผ Timing ๋ฐฉ๋ฒ•์˜ ๊ฐ ์ˆ˜์ต๋ฅ ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋กœ์ง์„ ์งœ๋„๋ก ํ•œ๋‹ค.

 

<BNP ๋ฐฉ๋ฒ•>

 

ํ˜„์ค€์ด์˜ BNP ๋ฐฉ๋ฒ•์€ ์‚ด ์ˆ˜ ์žˆ์„ ๋•Œ ๋‹ค ์‚ฌ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์— ๋‹ด๊ธด ์ฃผ๊ฐ€๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธํ•˜๋ฉด์„œ ๋‚ด๊ฐ€ ๊ฐ€์ง„ ํ˜„๊ธˆ๋ณด๋‹ค ์ฃผ๊ฐ€๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ ํ’€ ๋งค์ˆ˜๋ฅผ ํ•œ๋‹ค.

 

  1. for๋ฌธ๊ณผ if๋ฌธ์œผ๋กœ 14์ผ๋™์•ˆ ๋‚ด๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ์‚ด ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ ๋งˆ๋ จํ•ด ์ค€๋‹ค.
  2. ์ž„์‹œ๋ณ€์ˆ˜ temp์— ๋‚ด๊ฐ€ ๊ตฌ๋งคํ•œ ์ฃผ์‹ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋‹ด์•„๋‘”๋‹ค.
  3. ๋‚ด๊ฐ€ ์ฃผ์‹์„ ์‚ฌ๋ฉด์„œ ์“ด ๋ˆ์„ ๋ณด์œ ํ•œ ํ˜„๊ธˆ์—์„œ ๋นผ์ฃผ๋ฉด์„œ ํ˜„์žฌ ๋ณด์œ ํ•œ ํ˜„๊ธˆ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์ค€๋‹ค.
  4. ์ฃผ์‹ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜์ธ stock์— ๋‚ด๊ฐ€ ๋ฐฉ๊ธˆ ๊ตฌ๋งคํ•œ ์ฃผ์‹ ์ˆ˜๋ฅผ ๋”ํ•ด์ค€๋‹ค.
  5. ์œ„์— ์ ์€ ์ž์‚ฐ ๊ณ„์‚ฐ ๋ฒ•์ธ (ํ˜„๊ธˆ + 1์›” 14์ผ์˜ ์ฃผ๊ฐ€ * ์ฃผ์‹ ์ˆ˜) ๋Œ€๋กœ ๊ณ„์‚ฐํ•ด ์ค€๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด ํ˜„์ค€์ด๋Š” ์ž๊ธฐ๊ฐ€ ์‚ด ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์ด ๋งŒ์กฑ๋œ๋‹ค๋ฉด ๋ฌด์ง€์„ฑ ํ’€ ๋งค์ˆ˜๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค!

 

 

 

<Timing ๋ฐฉ๋ฒ•>

 

๋‹ค์Œ์œผ๋กœ ์„ฑ๋ฏผ์ด์˜ Timing ๋ฐฉ๋ฒ•์€ ๊ณ ๋ฏผ์ด ์ฐธ ๋งŽ์•˜๋‹ค. 3์ผ ๋™์•ˆ ํ•˜๋ฝ์žฅ์ผ ๋•Œ ํ’€ ๋งค์ˆ˜๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ 3์ผ๋™์•ˆ ํ•˜๋ฝํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ฒดํฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ์ด๊ฒŒ ์ฐธ ๊ณ ๋ฏผ์ด ๋งŽ๊ณ  ๋งŽ์•˜๋‹ค.. ์ฒ˜์Œ์—๋Š” ๋‚ ์งœ๋ฅผ ๊ณ„์‚ฐํ• ๋งŒํ•œ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ์ „ ๋‚ ์˜ ๊ฐ€๊ฒฉ์„ ์ €์žฅํ•ด ๋‘๊ณ  ๋‹ค์Œ ๋‚ ์˜ ๊ฐ€๊ฒฉ๊ณผ ๋น„๊ตํ•˜๋ฉด์„œ ์ฒดํฌํ–ˆ๋‹ค.

 

 

์ด๊ฒŒ ๋‚˜์ค‘ ๋ผ์„œ ๋ณด๋‹ˆ๊นŒ ๊ฐ€๊ฒฉ์ด 3์ผ ํ•˜๋ฝ์žฅ์ด๊ณ  ๋‚˜์„œ ๋‹ค์Œ๋‚  ๊ฐ€๊ฒฉ์ด ์ƒ์Šนํ•˜๊ธด ํ•˜๋Š”๋ฐ ์ƒ์Šนํ•œ ๋‹ค์Œ ๋‚  ์ „์ผ ๋Œ€๋น„ ๊ฐ€๊ฒฉ์ด ๋˜‘๊ฐ™์„ ์ˆ˜๋„ ์žˆ๊ณ  ์ƒ์Šนํ•  ์ˆ˜๋„ ์žˆ๊ณ  ํ•˜๋ฝํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๊ทธ๋ž˜์„œ ๋ญ”๊ฐ€ ์ฒดํฌํ•˜๊ธฐ ์ƒ๋‹นํžˆ ๊นŒ๋‹ค๋กœ์› ๋‹ค. ๋˜ 3์ผ ๋™์•ˆ ์ƒ์Šนํ•˜๋Š” ๊ฑฐ ์ฒดํฌํ•˜๋Š” ๋ณ€์ˆ˜ ๋งŒ๋“ค์–ด์„œ ํ•˜๋‹ˆ๊นŒ ์•„ ๋จธ๋ฆฌ๊ฐ€ ํ„ฐ์ ธ๋ฒ„๋ฆด ๊ฒƒ ๊ฐ™๊ณ  ์ด์ƒํ–ˆ๋‹ค.

 

 

๊ทธ๋ž˜์„œ 3-4์‹œ๊ฐ„ ๋ฏธ๋ จํ•˜๊ฒŒ ๋ถ™์žก๊ณ  ์žˆ๋‹ค๊ฐ€ ํฌ๊ธฐํ–ˆ๋‹ค. ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ๋‚œ ๋ฉ์ฒญํ•ด์„œ ๋ชป ํ’€ ๊ฑฐ์•ผใ…œ ํ•˜๊ณ  ๊ทธ๋ƒฅ ์žค์Œ. ์ž๊ณ  ์ผ์–ด๋‚˜์„œ ์•„๋ฌด๊ณ ํ†  ํ•˜๊ธฐ ์‹ซ๋‹ค๊ฐ€ ํ•˜.. ๊ทธ๋ž˜๋„ ์ž๋ฉด์„œ ๋ฆฌํ”„๋ ˆ์‰ฌํ–ˆ์œผ๋‹ˆ๊นŒ ๋‚ด๊ฐ€ ์ง  ๋กœ์ง์„ ๋‹ค์‹œ ๋ดค๋‹ค. ๊ทผ๋ฐ ๋ญ”๊ฐ€ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ๋‚ฌ๋‹ค.

 

price[i] < price[i - 1] && price[i - 1] < price[i - 2] && price[i - 2] < price[i - 3]

 

์ด๋ ‡๊ฒŒ and ์—ฐ์‚ฐ์ž๋กœ 3์ผ ๋™์•ˆ ๊ฐ’์ด ํ•˜๋ฝํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ ์ฒดํฌํ•˜๋ฉด ์ฐธ ์‰ฝ์ง€ ์•Š๋‚˜! ํ•˜๊ณ  ๋ฐ”๋กœ ์ฝ”๋“œ ๊ฐˆ์•„์—Ž๊ธฐ.. ใ…‹ใ…‹ใ…‹ ์‚ฌ์‹ค ์ € ์œ„์˜ ๋ฐฉ๋ฒ•์€ ๋ˆ„๊ตฐ๊ฐ€ ๊ตฌํ˜„ํ–ˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฐ”๋ณด๋ผ์„œ ๋ชป ํ•œ๊ฑธ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทผ๋ฐ ๋” ์ด๊ฒŒ ๊ฐ€๋…์„ฑ๋„ ์ข‹๊ณ  ๋” ๊ฐ„๊ฒฐํ•˜๊ณ !! ๊ดœ์ฐฎ์ง€ ์•Š์„๊นŒ ํ•ด์„œ ์‚ฌ์šฉํ•œ ๊ฑฐ๋‹ค! (๋ณ€๋ช… ์•„๋‹˜)

 

 

๊ทผ๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ ๋ญ”๊ฐ€ ๋˜ ๊ทธ ์˜ˆ์ œ ์ถœ๋ ฅ์— ์“ฐ์—ฌ์žˆ๋Š” ์„ฑ๋ฏผ์˜ ์ž์‚ฐ๊ณผ ์ผ์น˜ํ•˜๊ฒŒ ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค. ์ž์‚ฐ์ด ๋งˆ์ด๋„ˆ์Šค์˜€๋‹คใ…‹ใ…‹ใ…‹ใ…‹

์–˜๋Š” ๋ˆ์„ ๋‹ค ์žƒ์—ˆ๋…ธใ…‹

 

๋ง๋„ ์•ˆ ๋ผ!!!! ๋นš ์•ˆ ๋‚ธ๋‹ค๋ฉฐ!!! ๊ทธ๋ž˜์„œ ๋งˆ์ด๋„ˆ์Šค๋ฉด ์กฐ๊ฑด๋ฌธ์ด ์ด์ƒํ•œ ๊ฑฐ๊ฒ ์ง€ ํ•˜๊ณ  ์•„์ฐจ ์‹ถ์—ˆ์Œ.

 

 

์œ„ ์กฐ๊ฑด๋งŒ ๋‹ฌ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ ๋ˆ์ด ์—†์„ ์ˆ˜๋„ ์žˆ์ž–์•„ ใ…‹ใ…‹ ๊ทธ๊ฑฐ๋ฅผ ์ฒดํฌํ•ด์ค˜์•ผ ํ–ˆ์Œ ใ…œ

 

 

3์ผ ๋™์•ˆ ๊ฐ’์ด ์˜ค๋ฅด๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋Œ€๋กœ ์กฐ๊ฑด์„ ๋‹ฌ๊ณ  ๋‚˜์„œ ๋กœ์ง์„ ์™„์„ฑํ–ˆ๋Š”๋ฐ, ๋˜ ์ด์ƒํ•จ. ์•„ ์ด๊ฑฐ 3์ผ ๋™์•ˆ ๊ฐ’ ์˜ค๋ฅผ ๋•Œ๋„ ์กฐ๊ฑด ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ ์–ธ์ œ ํ•ด์•ผ ํ•˜์ง€? ์ƒ๊ฐํ•ด ๋ดค๋Š”๋ฐ ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์ฃผ์‹์ด ์—†๋Š”๋ฐ, ใ…‹ใ…‹ใ…‹์ฃผ์‹์„ ํŒ”๊ณ  ์žˆ์—ˆ์Œใ…œใ…œ

 

๊ทธ๋ž˜์„œ ์ด ๋•Œ๋Š” ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์ฃผ์‹์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ๋Š”์ง€ ์ฒดํฌํ•ด ์ฃผ๋„๋ก ํ–ˆ๋‹ค. ์ž! ์ด์ œ ๋์ผ ๊ฑธ~

 

  1. for๋ฌธ์œผ๋กœ 3์ผ ๋™์•ˆ ํ•˜๋ฝ, ์ƒ์Šนํ•˜๋Š” ๊ธฐ๊ฐ„์„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ ๋งˆ๋ จํ•ด ์ค€๋‹ค.
  2. ๋‘ ๊ฐœ์˜ if๋ฌธ์œผ๋กœ ๋‚ด๊ฐ€ ๋ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๊ฐ’์ด 3์ผ ๋™์•ˆ ์—ฐ์†์œผ๋กœ ํ•˜๋ฝํ•˜๋Š” ๋‹ค์Œ ๋‚ ์— ํ’€ ๋งค์ˆ˜ ํ•ด์ค€๋‹ค.
  3. ๋‚ด๊ฐ€ ์ฃผ์‹์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๊ณ , ๊ฐ’์ด 3์ผ๋™์•ˆ ์—ฐ์†์œผ๋กœ ์ƒ์Šนํ•˜๋Š” ๋‹ค์Œ๋‚ ์— ํ’€ ๋งค๋„ ํ•ด์ค€๋‹ค.
  4. ํ’€ ๋งค์ˆ˜ ๋ฐฉ๋ฒ•์€ ํ˜„์ค€์ด ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™๋‹ค. 
  5. ํ’€ ๋งค๋„ํ•  ๋•Œ๋Š” ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์ฃผ์‹ ์ˆ˜์™€ ํ˜„์žฌ ์ฃผ๊ฐ€๋ฅผ ๊ณฑํ•ด์„œ ์ˆ˜์ต์„ ๊ณ„์‚ฐํ•œ ํ›„ ํ˜„๊ธˆ์— ๋”ํ•ด์ฃผ๋ฉด์„œ ์—…๋ฐ์ดํŠธํ•ด ์ค€๋‹ค.
  6. ๋‚ด๊ฐ€ ๋ณด์œ ํ•œ ์ฃผ์‹์„ ๋‹ค ํŒ”์•˜์„ ํƒœ๋‹ˆ, ๋ณด์œ  ์ฃผ์‹ ์ˆ˜๋ฅผ 0๊ฐœ๋กœ ์—…๋ฐ์ดํŠธํ•ด์ค€๋‹ค.
  7. ์ž์‚ฐ ๊ณ„์‚ฐ๋ฒ• ๋Œ€๋กœ ๊ณ„์‚ฐํ•ด ์ค€๋‹ค.

 

์ž ์ด์ œ ์™„๋ฒฝํ•˜๋‹ค. -> ๊ตฌ๋ผ์ž„

 

(์‚ฌ์‹ค ์™„๋ฒฝํ•˜์ง€ ์•Š์•˜๋‹ค.) ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋”๋Ÿฌ์› ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

ํ .. ์›๋ž˜ ๊ท€์ฐฎ์•„์„œ ์ž˜ ์•ˆ ํ–ˆ๋Š”๋ฐ ์ด๋ฏธ ์ œ์ถœ์ด ๋งŽ์ด ๋Šฆ์–ด์„œ ์˜ˆ์˜๊ฒŒ ๋‹ค์‹œ ์ฝ”๋“œ ์ •๋ฆฌํ•ด ์คฌ์Œ! 

ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊ฟจ๋‹ค. ์ด๊ฒŒ ๋ญ”๊ฐ€ ๋” ๊น”๋”ํ–ˆ๋‹ค. ์œ„์— ์„ค๋ช…ํ•œ ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  bnp, timing ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค.

 

 


BNP ๋ฐฉ๋ฒ•๋Œ€๋กœ ๋‚ธ ์ˆ˜์ต๋ฅ ์„ ์ค€ํ˜„์ด์˜ ์ž์‚ฐ์ธ jMoney์— ๋‹ด์•„์ฃผ๊ณ , Timing ๋ฐฉ๋ฒ•๋Œ€๋กœ ๋‚ธ ์ˆ˜์ต๋ฅ ์€ ์„ฑ๋ฏผ์ด์˜ ์ž์‹ ์ธ sMoney์— ๋‹ด์•„์ฃผ์—ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ๋น„๊ต ์—ฐ์‚ฐ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์ถœ๋ ฅ๋ฌธ์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์–ด๋–ค ๊ฒƒ์ด ์ˆ˜์ต์ด ๋” ์งญ์งคํ•œ ๋ฐฉ๋ฒ•์ธ์ง€ ์ถœ๋ ฅํ•˜๋„๋ก ํ–ˆ๋‹ค!!!!!!!

 

 

์ง„์งœ ๋„ˆ๋ฌด ํž˜๋“ค์—ˆ๋‹ค..... ํž..

 

์‹œ๊ฐ„ ๋ณต์žก๋„

๋ฐ˜๋ณต๋ฌธ์ด ์žˆ์ง€๋งŒ 14๋ฒˆ์œผ๋กœ ๊ณ ์ •๋ผ์„œ ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(1)์ด๋ผ๊ณ  ์ƒ๊ฐํ•จ!

 

์ „์ฒด์ฝ”๋“œ

import java.io.*;
import java.util.*;

public class 20546 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int money = Integer.parseInt(br.readLine());

        int[] price = new int[14];
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for (int i = 0; i < 14; i++) {
            price[i] = Integer.parseInt(st.nextToken());
        }
        int jMoney = bnp(money, price);
        int sMoney = timing(money, price);

        if (jMoney > sMoney) {
            System.out.println("BNP");
        } else if (jMoney < sMoney) {
            System.out.println("TIMING");
        } else {
            System.out.println("SAMESAME");
        }
    }

    private static int bnp(int money, int[] price) {
        int stock = 0;
        for (int i = 0; i < 14; i++) {
            if (price[i] <= money) {
                int temp = money / price[i];
                money -= temp * price[i];
                stock += temp;
            }
        }
        return money + (stock * price[13]);
    }

    private static int timing(int money, int[] price) {
        int stock = 0;
        for (int i = 3; i < 14; i++) {
            if (money > 0 && price[i] < price[i - 1] && price[i - 1] < price[i - 2] && price[i - 2] < price[i - 3]) {
                int temp = money / price[i];
                money -= temp * price[i];
                stock += temp;
            }
            if (stock > 0 && price[i - 3] < price[i - 2] && price[i - 2] < price[i - 1] && price[i - 1] < price[i]) {
                money += stock * price[i];
                stock = 0;
            }
        }
        return money + (stock * price[13]);
    }
}