Hello Ocean! ๐ŸŒผ

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””] programmers, N์œผ๋กœ ํ‘œํ˜„ ๋ณธ๋ฌธ

Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””] programmers, N์œผ๋กœ ํ‘œํ˜„

bba_dda 2020. 4. 4. 12:09
๋ฐ˜์‘ํ˜•

[๋ฌธ์ œ]

์•„๋ž˜์™€ ๊ฐ™์ด 5์™€ ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ์œผ๋กœ 12๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

12 = 5 + 5 + (5 / 5) + (5 / 5)
12 = 55 / 5 + 5 / 5
12 = (55 + 5) / 5

5๋ฅผ ์‚ฌ์šฉํ•œ ํšŸ์ˆ˜๋Š” ๊ฐ๊ฐ 6,5,4 ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฒฝ์šฐ๋Š” 4์ž…๋‹ˆ๋‹ค.
์ด์ฒ˜๋Ÿผ ์ˆซ์ž N๊ณผ number๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, N๊ณผ ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ค‘ N ์‚ฌ์šฉํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.

  • N์€ 1 ์ด์ƒ 9 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • number๋Š” 1 ์ด์ƒ 32,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ˆ˜์‹์—๋Š” ๊ด„ํ˜ธ์™€ ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์—์„œ ๋‚˜๋จธ์ง€๋Š” ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์†Ÿ๊ฐ’์ด 8๋ณด๋‹ค ํฌ๋ฉด -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

[ํ’€์ด]

์ฒซ ๋ฒˆ์งธ.

๋ฌธ์ œ ๊ฐˆ๋ž˜์—๋„ DP๊ฐ€ ๋ช…์‹œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— DP๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ธ๋Š” ๋ฌธ์ œ์ž„์€ ํ™•์‹คํ•˜๋‹ค..!

 

์–ด๋–ป๊ฒŒ DP๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ธ๊ฐ€?

 

N=5์ผ ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

1. 5 ํ•œ ๊ฐœ -> 5

2. 5 ๋‘ ๊ฐœ -> 55, 5+5, 5-5, 5*5, 5/5

๋‹ค์„ฏ๋ฐฐ๋กœ ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ,

๋’ค์— 5๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ๊ณผ, ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์€ ์•ž๋’ค ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

3. 5 ์„ธ ๊ฐœ

->555, 555, 55+5, 55-5, 55*5, 55/5, 5/55

   55+5, 5+55, (5+5)+5, (5+5)-5, (5+5)*5, (5+5)/5, 5/(5+5) 

   55-5, 5-55, (5-5)+5, (5-5)-5, (5-5)*5, (5-5)/5, 5/(5-5)

   55*5, 5*55, (5*5)+5, (5*5)-5, (5*5)*5, (5*5)/5, 5/(5*5)

   55/5, 5/55, (5/5)+5, (5/5)-5, (5/5)*5, (5/5)/5, 5/(5/5)

์ด๋ ‡๊ฒŒ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ์•ฝ 7๋ฐฐ์”ฉ ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. 

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ ๋‹จ๊ณ„์—์„œ ๋‚˜์˜จ ๊ฐ’๋“ค์„ ์–ด๋–ค ํ˜•ํƒœ๋กœ ์ €์žฅํ•  ๊ฒƒ์ธ๊ฐ€? 

1. ์ˆ˜๋ฅผ ๋‘ ๋ฉ์–ด๋ฆฌ๋กœ ๋ณด๊ด€

2. ๊ฐ ๋ฉ์–ด๋ฆฌ๊ฐ€ ์ˆ˜์ธ์ง€, ๊ณ„์‚ฐ์‹์ธ์ง€ ํ‘œ์‹œ 

(ํ•˜๋‚˜์˜ ์ˆ˜๋ผ๋ฉด, 5๋ฅผ ๋ถ™์—ฌ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ˆ˜์‹์ด๋ผ๋ฉด ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค)

 

๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋„˜์–ด๊ฐˆ ๋•Œ ๋งˆ๋‹ค, ์ด์ „๋‹จ๊ณ„์˜ ๊ฐ’๋“ค์€ ๊ณ„์† ๋‚จ๊ฒจ๋‘˜ ํ•„์š”๊ฐ€ ์—†๋‹ค. 

๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ์ €์žฅ๊ณต๊ฐ„ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ. 

 

vector์— ๊ฐ ๋‹จ๊ณ„์˜ ์ˆ˜๋“ค์„ ์ €์žฅํ•˜์ž. 

vector ํ•œ ์นธ์˜ ๊ตฌ์„ฑ [num1, num2, flag1, flag2, result]

ex) 55+(5-5) 

num1 = 55

num2 = 0

flag1 = 1

flag2 = 0

(flag๊ฐ€ 1์ด๋ฉด ์ˆซ์ž, 0์ด๋ฉด ๊ณ„์‚ฐ์‹, -1์ด๋ฉด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ)

(55์˜ ๊ฒฝ์šฐ, num2๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, flag2=-1๋กœ ํ•ด๋‘์–ด num2๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค)

result = 55

 

vector์•ˆ์— result๊ฐ€ number๊ณผ ๊ฐ™์€ ์นธ์ด ์ƒ๊ธฐ๋ฉด ์ข…๋ฃŒ(return ๋ฐ˜๋ณตํšŸ์ˆ˜)

or

๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ 8์„ ๋„˜์–ด๊ฐ€๋ฉด ์ข…๋ฃŒ(return -1)

๋ฐ˜์‘ํ˜•