-
[Algo Rhythm๐บ๐] BOJ 17521. Byte coinAlgo Rhythm๐บ๐/BOJ 2020. 8. 24. 13:48
๐ ๋ฌธ์ ์ค๋ช
๊ตญ์ ์๋ณธ๋ถ๋์ฐํ์ฌ(ICPC)๋ ๋ฐ์ดํธ ์ฝ์ธ(Byte Coin)์ ์๊ธ์ ํฌ์ํ๊ณ ์๋ค. ๋ฐ์ดํธ ์ฝ์ธ์ ๊น๋ฐ์ฌ๊ฐ ๋ง๋ ๊ฐ์ ํํ์ด๋ค. ์ค์ ๋ก๋ ๋ฐ์ดํธ ์ฝ์ธ ๊ฐ๊ฒฉ์ ์์ํ ์ ์์ง๋ง ์ด ๋ฌธ์ ์์๋ ๋ฐ์ดํธ ์ฝ์ธ ๊ฐ๊ฒฉ ๋ฑ๋ฝ์ ๋ฏธ๋ฆฌ ์ ํํ ์์ธกํ ์ ์๋ค๊ณ ๊ฐ์ ํ์.
์ฐ๋ฆฌ๋ 1์ผ๋ถํฐ n์ผ๊น์ง n์ผ ๋์ ๊ทธ๋ฆผ 1๊ณผ ๊ฐ์ด ๋ฐ์ดํธ ์ฝ์ธ์ ๋ฑ๋ฝ์ ๋ฏธ๋ฆฌ ์ ์ ์์ผ๋ฉฐ ์ฐ๋ฆฌ์๊ฒ๋ ์ด๊ธฐ ํ๊ธ W๊ฐ ์ฃผ์ด์ ธ ์๋ค. ๊ทธ๋ฆผ 1์ ๋นจ๊ฐ์ ๋ค๋ชจ๋ ํด๋น ์ผ์์ ๋ฐ์ดํธ ์ฝ์ธ ๊ฐ๊ฒฉ์ ๋ํ๋ธ๋ค. ๋งค์ผ ๋ฐ์ดํธ ์ฝ์ธ์ ๋งค์ํ๊ฑฐ๋ ๋งค๋ํ ์ ์๋ค๊ณ ํ์. ๋ค๋ง ๋ฐ์ดํธ ์ฝ์ธ ํ๋๋ฅผ ๋๋์ด ๋งค๋ํ๊ฑฐ๋ ๋งค์ํ ์๋ ์๋ค. ์ฐ๋ฆฌ๋ n์ผ ๋ ๋ณด์ ํ๊ณ ์๋ ๋ชจ๋ ์ฝ์ธ์ ๋งค๋ํ ๋ ๊ฐ์ง๊ณ ์๋ ํ๊ธ์ ์ต๋ํํ๊ณ ์ถ๋ค.
๊ทธ๋ฆผ 1. 10 ์ผ๊ฐ ๋ฐ์ดํธ ์ฝ์ธ ๊ฐ๊ฒฉ ๋ฑ๋ฝ ๊ทธ๋ํ
์๋ฅผ ๋ค์ด, ๊ทธ๋ฆผ 1๊ณผ ๊ฐ์ ๋ฐ์ดํธ ์ฝ์ธ ๋ฑ๋ฝ ๊ทธ๋ํ๋ฅผ ์ฒซ๋ ๋ฏธ๋ฆฌ ์ ์ ์๋ค๊ณ ํ๊ณ ์ฐ๋ฆฌ์๊ฒ ์ฃผ์ด์ง ์ด๊ธฐ ํ๊ธ์ด 24๋ผ๊ณ ํ์. ์์ต์ ์ต๋ํ ๋์ด๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ดํธ ์ฝ์ธ์ ๋งค์, ๋งค๋ํ ์ ์๋ค. ์ฒซ ๋ ํ๊ธ 20์ ์จ์ 4๊ฐ์ ์ฝ์ธ์ ์ฐ๋ค. ๋์งธ ๋ ๋ชจ๋ ์ฝ์ธ์ ๋งค๋ํด์ ํ๊ธ 28์ ์ป๊ณ ๋ชจ๋ 32์ ํ๊ธ์ ๊ฐ๊ฒ ๋๋ค. 5์ผ์งธ ๋๋ ๋ ํ๊ธ 32๋ฅผ ์จ์ 16๊ฐ์ ์ฝ์ธ์ ๋งค์ํ๋ค. 7์ผ์งธ ๋๋ ๋ ๋ชจ๋ ์ฝ์ธ์ ๋งค๋ํด์ ๋ชจ๋ 128์ ํ๊ธ์ ๊ฐ๊ฒ ๋๋ค. 9์ผ์งธ ๋๋ ๋ ํ๊ธ 126์ ์จ์ 42๊ฐ์ ์ฝ์ธ์ ์ฌ๊ณ 10์ผ ๋ ๋ชจ๋ ์ฝ์ธ์ ๋งค๋ํ๋ค. ๊ทธ๋ฌ๋ฉด 10์ผ ๋ ํ๊ธ์ด 170์ด ๋๊ณ ์ด๊ฒ์ด ์ต๋์ด๋ค.
์์ผ ์ n, ์ด๊ธฐ ํ๊ธ W, 1์ผ๋ถํฐ n์ผ๊น์ง ๊ฐ ์์ผ์ ๋ฐ์ดํธ ์ฝ์ธ ๊ฐ๊ฒฉ์ด ์ฃผ์ด์ง ๋, n์ผ ๋ ๋ณด์ ํ๊ณ ์๋ ๋ชจ๋ ์ฝ์ธ์ ๋งค๋ํ ๋ ๋ณด์ ํ๊ฒ ๋ ์ต์ข ํ๊ธ์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ ๋ ฅ์ ํ์ค์ ๋ ฅ์ ์ฌ์ฉํ๋ค. ์ฒซ ๋ฒ์งธ ์ค์ ์์ผ ์๋ฅผ ๋ํ๋ด๋ ์์ ์ ์ n๊ณผ ์ด๊ธฐ ํ๊ธ W(1 ≤ n ≤ 15, 1 ≤ W ≤ 100,000)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ n ๊ฐ์ ์ค์์, i๋ฒ์งธ ์ค์ i์ผ์ ๋ฐ์ดํธ ์ฝ์ธ ๊ฐ๊ฒฉ์ ๋ํ๋ด๋ ์ ์ si๊ฐ ์ฃผ์ด์ง๋ค(1 ≤ si ≤ 50).์ถ๋ ฅ
์ถ๋ ฅ์ ํ์ค์ถ๋ ฅ์ ์ฌ์ฉํ๋ค. n์ผ ๋ ๋ณด์ ํ๊ณ ์๋ ๋ชจ๋ ์ฝ์ธ์ ๋งค๋ํ ๋ ๊ฐ์ง๊ณ ์๋ ํ๊ธ์ ์ต๋๊ฐ์ ํ ํ์ ์ถ๋ ฅํ๋ค. ๋น๋ก ์ด๊ธฐ ํ๊ธ W๋ ๊ทธ๋ ๊ฒ ํฌ์ง ์์ง๋ง ์ต์ข ํ๊ธ์ ๋งค์ฐ ์ปค์ง ์ ์์์ ์ฃผ์ํ์.๐ฏ ์ด๋ป๊ฒ ํ์๋
1. Greedy
import java.util.Scanner; public class BOJ_17512 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int day = sc.nextInt(); long money = sc.nextInt(); int[] prices = new int[15]; for(int i = 0; i < day; i++) prices[i] = sc.nextInt(); for(int i = 1; i < day; i++) { if(prices[i - 1] < prices[i]) { long coin = money / prices[i - 1]; money += (prices[i] - prices[i - 1]) * coin; } } System.out.println(money); sc.close(); } }
๐ง ์ ์ ๋ ๊ฒ ํ์๋
1. Greedy
์ต๋์ ์ด์ต์ ์ป๊ธฐ ์ํด์๋ greedyํ๊ฒ ํ๋ํ๋ฉด ๋๋ค. ์ฆ, ๋ด์ผ์ ์ฝ์ธ ๊ฐ๊ฒฉ์ด ์ค๋์ ์ฝ์ธ ๊ฐ๊ฒฉ๋ณด๋ค ๋น์ธ๋ฉด ์ค๋ ์ด ์ ์๋ ๋งํผ ์ฌ์ ๋ด์ผ ํ๋ ๊ฒ์ด๋ค.
๐ ๋ฌด์์ ๋ฐฐ์ ๋
๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ ํ ๋๋ง๋ค ํ์ ๋ณด๋ค๋ ์ง๊ด์ ์์กดํด์ ํธ๋ ๊ฒฝํฅ์ด ์๋ค. ์ด๋ป๊ฒ ํ๋ฉด ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํ์ ์ ๊ฐ์ง๊ณ ํ ์ ์์๊น?
'Algo Rhythm๐บ๐ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algo Rhythm๐บ๐]BOJ 13458 - ์ํ๊ฐ๋ (0) 2021.03.09 [Algo Rhythm๐บ๐] BOJ 16288. Passport Control (0) 2020.09.03 [Algo Rhythm๐บ๐] BOJ 17528. Two Machines (0) 2020.08.26 [Algo Rhythm๐บ๐] BOJ 17626. Four Squares (0) 2020.08.24 [Algo Rhythm๐บ๐] BOJ 17520. Balanced String (0) 2020.08.24