๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/20546
ํ๊ธฐ ์ ์ ์์ด๋์ด
๊ธฐ์ ์ ๋งค๋งค๋ฒ ๋ฌธ์ ๋ ์คํ์ด์ ์ฑ๋ฏผ์ด์ ๊ฐ ๋งค๋งค๋ฒ์ธ BNP, Timing ์ค ์ด๋ค ๋ฐฉ๋ฒ์ด ๋ ์์ต๋ฅ ์ด ๋์ ์ง๋ฅผ ๋ฐ์ ธ๋ณด๋ ๋ฌธ์ ์๋ค.
์ฃผ์์ ํ๋๋ก ์ ํด์ ธ์๊ณ , ํ๊ธ๊ณผ 14์ผ ๋์์ ์ฃผ๊ฐ๋ฅผ ์ ๋ ฅ๋ฐ์์ ๋ ์์ต์ด ๋์ ๋งค๋งค๋ฒ์ ์ถ๋ ฅํ๊ณ ๊ฐ์ผ๋ฉด ๊ฐ๋ค๊ณ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋ฌธ์ ๊ฐ ์๋นํ ๊ธธ์ด์ ๋๋ ์ฆ ์๊ฐ์ง๊ณ ํ.. ์ด๊ฒ ๋ญ ์๋ฆฐ์ง ์ดํดํ๋์ง ์ข ๊ฑธ๋ ธ๋ค. ใ ใ ใ ใ (์ฑ ์ ๋ง์ด ์ฝ์..)
ํ์ฌํผ ์ด ๋ฌธ์ ์์ ์ข ์ ์ฌํ ๋ด์ผํ๋ ๋ถ๋ถ์ด ๊ฐ ๋งค๋งค๋ฒ์ด ์ด๋ค ์์ผ๋ก ๋งค๋งค๋ฅผ ํ ๊ฒ์ธ๊ฐ์๋ค.
์คํ์ด์ ๋งค๋งค๋ฒ์ธ BNP ๋ฐฉ๋ฒ์ ์์ ์ด ๋ณด์ ํ ํ๊ธ์ผ๋ก ์ฃผ์์ ์ด ์ ์์ ๋ ์ต๋ํ ๋ค ์ฌ๋ ๊ฒ์ด๋ค. ์ฒซ ๋ ๋ถํฐ ์ด ์ ์์ผ๋ฉด ์ด ์ ์๋ ๋งํผ ๋ค ์ฌ๊ณ , ๋ค์ ๋ ์๋ ์ด ์ ์์ ๋งํผ ํ๊ธ์ ๋ณด์ ํ๊ณ ์์ผ๋ฉด ํ ๋งค์๋ฅผ ํ๋ฉด ๋๋ค. ์ด์จ๋ ๊ทธ๋ฅ ๋ฌด์ง์ฑ ํ ๋งค์ ๋ฐฉ๋ฒ! ๊ทธ๋ฆฌ๊ณ ๋ฌด์กฐ๊ฑด ๋ง์ง๋ง ๋ ์ธ 14์ผ์ ํ๋งค๋!
์ฑ๋ฏผ์ด์ ๋งค๋งค๋ฒ์ธ Timing ๋ฐฉ๋ฒ์ด ์กฐ๊ธ ๊น๋ค๋ก์ ๋ค. ์๋ ํ ๋งค์ ํ ๋งค๋ ํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ, BNP์ ๋ค๋ฅธ ์ ์ ์ด ์ ์์ ๋ ๋ค ์ฌ๋๊ฒ ์๋๋ผ 1~14์ผ ์ฃผ๊ฐ๋ฅผ ๋ณด๋ฉด 3์ผ ์ฐ์ ๊ฐ๊ฒฉ์ด ์์นํ๋ฉด ๋ค์๋ ๋ฌด์กฐ๊ฑด ๊ฐ๊ฒฉ์ด ํ๋ฝํ๋ค๊ณ ๊ฐ์ ํ๋ค. ๋ฐ๋๋ก 3์ผ ์ฐ์ ๊ฐ๊ฒฉ์ด ํ๋ฝํ๋ฉด ๋ค์๋ ๋ฌด์กฐ๊ฑด ๊ฐ๊ฒฉ์ด ์์นํ๋ค๊ณ ๊ฐ์ ํ๋ค. ์ด๋ฐ ํ์ด๋ฐ์์ ํ ๋งค๋, ํ ๋งค์๋ฅผ ํ๊ฒ ๋๋ค. ์ ์ผ ๋๋น ๊ฐ๊ฒฉ์ด ๊ฐ๋ค๋ฉด ๊ฐ๊ฒฉ์ด ์์นํ๊ฑฐ๋ ํ๋ฝํ๋ ๊ฒ์ ์๋๋ผ๋ ๊ฒ๋ ํฌ์ธํธ์๋ค.
๋์ ์์ฐ์ ๋น๊ตํด์ผ ํ๋๋ฐ ์์ฐ์ (ํ๊ธ + 1์ 14์ผ์ ์ฃผ๊ฐ * ์ฃผ์ ์)๋ก ๊ณ์ฐํ๋ฉด ๋๋ค.
๊ณผ์
์ ์ด์ ๋ ํ๋๋๋ก BufferReader, StringTokenizer๋ฅผ ํตํด ํ๊ธ๊ณผ 14์ผ ๋์์ ์ฃผ๊ฐ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ฃผ๊ฐ๋ ๋ฐฐ์ด์ ์ ์ฅํ๋๋ก ํ๋ค.
์ด์ BNP ๋ฐฉ๋ฒ๊ณผ Timing ๋ฐฉ๋ฒ์ ๊ฐ ์์ต๋ฅ ์ ๊ณ์ฐํ๋ ๋ก์ง์ ์ง๋๋ก ํ๋ค.
<BNP ๋ฐฉ๋ฒ>
ํ์ค์ด์ BNP ๋ฐฉ๋ฒ์ ์ด ์ ์์ ๋ ๋ค ์ฌ์ผํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ๋ด๊ธด ์ฃผ๊ฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ํ์ธํ๋ฉด์ ๋ด๊ฐ ๊ฐ์ง ํ๊ธ๋ณด๋ค ์ฃผ๊ฐ๊ฐ ์๊ฑฐ๋ ๊ฐ์ ๋ ํ ๋งค์๋ฅผ ํ๋ค.
- for๋ฌธ๊ณผ if๋ฌธ์ผ๋ก 14์ผ๋์ ๋ด๊ฐ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ต๋ํ ๋ง์ด ์ด ์ ์๋๋ก ํ๊ฒฝ์ ๋ง๋ จํด ์ค๋ค.
- ์์๋ณ์ temp์ ๋ด๊ฐ ๊ตฌ๋งคํ ์ฃผ์ ์๋ฅผ ๊ณ์ฐํ์ฌ ๋ด์๋๋ค.
- ๋ด๊ฐ ์ฃผ์์ ์ฌ๋ฉด์ ์ด ๋์ ๋ณด์ ํ ํ๊ธ์์ ๋นผ์ฃผ๋ฉด์ ํ์ฌ ๋ณด์ ํ ํ๊ธ์ผ๋ก ์ ๋ฐ์ดํธํด์ค๋ค.
- ์ฃผ์ ๊ฐ์๋ฅผ ๋ด๋ ๋ณ์์ธ stock์ ๋ด๊ฐ ๋ฐฉ๊ธ ๊ตฌ๋งคํ ์ฃผ์ ์๋ฅผ ๋ํด์ค๋ค.
- ์์ ์ ์ ์์ฐ ๊ณ์ฐ ๋ฒ์ธ (ํ๊ธ + 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์ผ ๋์ ๊ฐ ์ค๋ฅผ ๋๋ ์กฐ๊ฑด ํ๋ ์ถ๊ฐํด์ค์ผ ํ๋๋ฐ ์ธ์ ํด์ผ ํ์ง? ์๊ฐํด ๋ดค๋๋ฐ ๋ด๊ฐ ๊ฐ์ง ์ฃผ์์ด ์๋๋ฐ, ใ ใ ใ ์ฃผ์์ ํ๊ณ ์์์ใ ใ
๊ทธ๋์ ์ด ๋๋ ๋ด๊ฐ ๊ฐ์ง ์ฃผ์์ด ํ๋๋ผ๋ ์๋์ง ์ฒดํฌํด ์ฃผ๋๋ก ํ๋ค. ์! ์ด์ ๋์ผ ๊ฑธ~
- for๋ฌธ์ผ๋ก 3์ผ ๋์ ํ๋ฝ, ์์นํ๋ ๊ธฐ๊ฐ์ ์ฒดํฌํ ์ ์๋๋ก ํ๊ฒฝ์ ๋ง๋ จํด ์ค๋ค.
- ๋ ๊ฐ์ if๋ฌธ์ผ๋ก ๋ด๊ฐ ๋์ ๊ฐ์ง๊ณ ์๊ณ , ๊ฐ์ด 3์ผ ๋์ ์ฐ์์ผ๋ก ํ๋ฝํ๋ ๋ค์ ๋ ์ ํ ๋งค์ ํด์ค๋ค.
- ๋ด๊ฐ ์ฃผ์์ ๋ณด์ ํ๊ณ ์๊ณ , ๊ฐ์ด 3์ผ๋์ ์ฐ์์ผ๋ก ์์นํ๋ ๋ค์๋ ์ ํ ๋งค๋ ํด์ค๋ค.
- ํ ๋งค์ ๋ฐฉ๋ฒ์ ํ์ค์ด ๋ฐฉ๋ฒ๊ณผ ๊ฐ๋ค.
- ํ ๋งค๋ํ ๋๋ ๋ด๊ฐ ๊ฐ์ง ์ฃผ์ ์์ ํ์ฌ ์ฃผ๊ฐ๋ฅผ ๊ณฑํด์ ์์ต์ ๊ณ์ฐํ ํ ํ๊ธ์ ๋ํด์ฃผ๋ฉด์ ์ ๋ฐ์ดํธํด ์ค๋ค.
- ๋ด๊ฐ ๋ณด์ ํ ์ฃผ์์ ๋ค ํ์์ ํ๋, ๋ณด์ ์ฃผ์ ์๋ฅผ 0๊ฐ๋ก ์ ๋ฐ์ดํธํด์ค๋ค.
- ์์ฐ ๊ณ์ฐ๋ฒ ๋๋ก ๊ณ์ฐํด ์ค๋ค.
์ ์ด์ ์๋ฒฝํ๋ค. -> ๊ตฌ๋ผ์
(์ฌ์ค ์๋ฒฝํ์ง ์์๋ค.) ์ฝ๋๊ฐ ๋๋ฌด ๋๋ฌ์ ๊ธฐ ๋๋ฌธ์ด๋ค.
ํ .. ์๋ ๊ท์ฐฎ์์ ์ ์ ํ๋๋ฐ ์ด๋ฏธ ์ ์ถ์ด ๋ง์ด ๋ฆ์ด์ ์์๊ฒ ๋ค์ ์ฝ๋ ์ ๋ฆฌํด ์คฌ์!
ํจ์ ํธ์ถ ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟจ๋ค. ์ด๊ฒ ๋ญ๊ฐ ๋ ๊น๋ํ๋ค. ์์ ์ค๋ช ํ ๋๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ 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]);
}
}