๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์˜ ๊ฐฏ์ˆ˜

by Fomagran ๐Ÿ’ป 2022. 3. 6.
728x90
๋ฐ˜์‘ํ˜•

Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์˜ ๊ฐฏ์ˆ˜

์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๋ž€ (())๋‚˜ ()์™€ ๊ฐ™์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ชจ๋‘ ๋‹ซํžŒ ๊ด„ํ˜ธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. )(๋‚˜ ())() ์™€ ๊ฐ™์€ ๊ด„ํ˜ธ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ด„ํ˜ธ ์Œ์˜ ๊ฐœ์ˆ˜ n์ด ์ฃผ์–ด์งˆ ๋•Œ, n๊ฐœ์˜ ๊ด„ํ˜ธ ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ชจ

programmers.co.kr


Solution

 

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ด์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๊ด„ํ˜ธ๊ฐ€ 1์Œ์ธ ๊ฒƒ๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ n์Œ๊นŒ์ง€ ์ฐจ๊ทผ ์ฐจ๊ทผ ํ’€์–ด๋‚˜๊ฐ€์•ผ ํ•˜๋Š”๋ฐ์š”.


์ง์ ‘ ๊ตฌํ•ด๋ณด๊ธฐ

 

๊ด„ํ˜ธ๊ฐ€ 1์Œ์ผ ๋• ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ -> ()๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

๊ด„ํ˜ธ๊ฐ€ 2์Œ์ผ ๊ฒฝ์šฐ -> ()(),(()) ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐœ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

๊ด„ํ˜ธ๊ฐ€ 3์Œ์ผ ๊ฒฝ์šฐ -> ((())), (()()), (())(), ()(()),()()() ์ด๋ ‡๊ฒŒ 5๊ฐœ ์ž…๋‹ˆ๋‹ค.

 

๊ด„ํ˜ธ๊ฐ€ 4์Œ์ผ ๊ฒฝ์šฐ -> (((()))), ((()())), ((())()), (()(())),(()()()),()((())), ()(()()), ()(())(), ()()(()),()()()(),((()))(), (()())(), (())()(), ()(())(),()()()() ์ด๋ ‡๊ฒŒ 14๊ฐœ์ž…๋‹ˆ๋‹ค.

 

...

 

(5์Œ์ผ ๋•Œ ๋ถ€ํ„ฐ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์–ด๋Š ์ •๋„ ์žˆ๋Š”์ง€ ๋…ธ๊ฐ€๋‹ค๋กœ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์—†๋”๋ผ๊ตฌ์š”...)


์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ทœ์น™

 

์ด๋ ‡๊ฒŒ ์ง„ํ–‰ํ•˜๋ฉด ํ˜„์žฌ ์Œ์˜ ์˜ฌ๋ฐ”๋ฅผ ๊ด„ํ˜ธ๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด ๊ทธ ์ „ ์Œ๋“ค์˜ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค๋ฉด 4์Œ์˜ ์˜ฌ๋ฐ”๋ฅผ ๊ด„ํ˜ธ๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด 3์Œ์˜ ๊ด„ํ˜ธ์—์„œ ๊ด„ํ˜ธ ํ•œ ์Œ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

ex) ()()() -> (()()()) , (()()) -> ((()()))

 

์ฆ‰, 3์Œ์˜ ๊ฐฏ์ˆ˜๋งŒํผ ๋”ํ•ด์ง€๋Š” ๊ฒƒ์ด์ฃ .

 

๋˜ํ•œ 1์Œ๊ณผ 2์Œ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ๋’ค์— ํ•œ ์Œ์˜ ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

ex) () + ()() = ()()() -> (()()()), () + (()) = ()(()) -> (()(()))

 

์ฆ‰, ์ด๋Ÿฐ ์‹์œผ๋กœ 3์Œ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜, 1์Œ๊ณผ 2์Œ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ด๊ฒƒ์„ ๋ฐ˜๋Œ€๋กœ ํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ 5์Œ์„ ๊ตฌํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด 4์Œ * 0์Œ = 14๊ฐœ, 3์Œ * 1์Œ = 10๊ฐœ, 2์Œ * 2์Œ = 4๊ฐœ, 1์Œ * 3์Œ = 10๊ฐœ, 0์Œ * 4์Œ = 14๊ฐœ

-> 14+10+4+10+14 = 42๊ฐœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


์ ํ™”์‹

 

์ ํ™”์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์ง์ˆ˜์ธ ๊ฒฝ์šฐ์™€ ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ 

 

์ง์ˆ˜์ธ ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

dp[i] = (dp[0] * dp[i-1] + dp[1] * dp[i-2] ... dp[i/2-1]*dp[i-i/2])*2

 

๋ฐ˜๋ณต๋˜๋Š” ์ ˆ๋ฐ˜ ์ง€์ ์— ๊ณฑํ•˜๊ธฐ 2๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.

 

ex) 4์Œ์ธ ๊ฒฝ์šฐ 10 + 2 + 2 + 10 -> (10 + 2)*2

 

ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

dp[i] = (dp[0] * dp[i-1] + dp[1] * dp[i-2] ... dp[i/2-1] * dp[i-i/2])*2 + dp[i/2]*dp[i/2]

 

 

์ง์ˆ˜์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ’์„ 2๋ฒˆ ๊ณฑํ•ด์ฃผ๊ณ  ๊ฐ€์šด๋ฐ ๊ฐ’์„ ๋‚˜์ค‘์— ๋”ํ•ด์ค๋‹ˆ๋‹ค.

 

 

ex) 5์Œ์ธ ๊ฒฝ์šฐ 14 + 10 + 4 + 10 + 14 -> (14 + 10) * 2 + (4*4)


Source Code

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€