ํšจ์œจ์ ์ธ ํ™”ํ ๊ตฌ์„ฑ

2020. 9. 9. 22:18ใ†์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์ด ๋ฌธ์ œ๋Š” 2๋กœ ๋จผ์ € 2,4,6,8๊ฐ’์„ 1์”ฉ ๋”ํ•˜๋ฉด์„œ ์˜ฌ๋ฆฌ๊ณ , 3์œผ๋กœ ๊ทธ๋‹ค์Œ์„ ์˜ฌ๋ฆฌ๋ฉด์„œ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์€ d-3๊ณผ d-2์˜ ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ™”ํ๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ๊ฐ’์ด ํฐ๊ฒƒ์œผ๋กœ ๋จผ์ € ๋‚˜๋ˆ ์ง€๋ฉด ๋ชซ์„ ์ €์žฅํ•ด์„œ ์ถœ๋ ฅํ•˜๊ณ , ๋งŒ์•ฝ ๋‚˜๋ˆ ์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด 2์”ฉ ๊ณ„์† ๋นผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์™œ ๊ฐ€์žฅ ํฐ๊ฐ’๋ถ€ํ„ฐ ๋จผ์ € ๋‚˜๋ˆ ์ฃผ๋ƒ๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด ํฐ ๊ฐ’๋ถ€ํ„ฐ ๋‚˜๋ˆ„๋Š” ๊ฒŒ ์ตœ์†Œํ•œ์˜ ๊ฐ’์ผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด a+b = 18๋ผ๋Š” ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. a๊ฐ€ b๋ณด๋‹ค ํด๋•Œ a์˜ ๊ฐ’์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ๋งŽ์ด ๋„ฃ์œผ๋ฉด์„œ ๋“ฑ์‹์ด ์„ฑ๋ฆฝํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” b๋ฅผ ์กฐ๊ธˆ์”ฉ ์˜ฌ๋ฆฌ๋ฉด์„œ a๊ฐ€ ๋‚˜๋ˆ ์ง€๋Š” ๊ฐ’์ด ๋˜์—ˆ์„ ๋•Œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ 2์”ฉ ๊ณ„์† ๋นผ๋‹ค๊ฐ€ ๋‚˜๋ˆ ์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด? ๊ทธ ์ˆ˜๋Š” ์ ˆ๋Œ€๋กœ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์—†๋Š” ์ˆ˜์ธ ๊ฒƒ์ด๋‹ค. 8์ด ์žˆ์„ ๋•Œ 2์™€ 5๋กœ ๋งŒ๋“ค์–ด๋ณธ๋‹ค๊ณ  ํ•˜์ž. 5๋ฅผ ๋จผ์ € ๋‚˜๋ˆด๋Š”๋ฐ ๋‚˜๋ˆ ์ง€์ง€ ์•Š์•„์„œ 2๋ฅผ ๋นผ๊ณ  ๋˜ ๋ฐ˜๋ณตํ•ด์„œ 4,2,0์ด ๋œ๋‹ค. ์•„ ์ •์ •ํ•œ๋‹ค. 2๋กœ ๋นผ๋‹ค๊ฐ€ 0์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š” ์ˆ˜ ์ธ ๊ฒƒ์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž.

 

1. 1๋ฒˆ ๋ฐฉ๋ฒ•

n,m = map(int,input().split())

array = []

for i in range(n):
  array.append(int(input()))

d = [10001] * (m+1)

d[0] =0

for i in range(n):
  for j  in range(array[i], m+1):
    if d[j-array[i]] != 10001:
      d[j] = min(d[j], d[j-array[i]]+1)


if d[m] == 10001:
  print(-1)
else :
  print(d[m])

 

 

2. 2๋ฒˆ ๋ฐฉ๋ฒ•

์•„ 2๋ฒˆ ๋ฐฉ๋ฒ•์€ ์•ˆ๋œ๋‹ค. ๋ฐฑ์ค€์˜ ์„คํƒ•๋ฌธ์ œ์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ์„คํƒ•๋ฌธ์ œ๋Š” ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ์˜€๊ธฐ์— ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด์˜€๋‹ค. ์ด๊ฑด ๋ณ€์ˆ˜๊ฐ€ 100๊ฐœ ๊นŒ์ง€ ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ํ•˜๋‚˜ํ•˜๋‚˜ ํ•˜๋ฉด ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ด๋‹ค. ์œ„ ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ž.