[JavaScript/BOJ] 2164 - ์นด๋“œ2
ยท
Algorithm/๋ฐฑ์ค€(BOJ)
๐Ÿ“Œ ๋ฌธ์ œ N์žฅ์˜ ์นด๋“œ๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์นด๋“œ๋Š” ์ฐจ๋ก€๋กœ 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์–ด ์žˆ์œผ๋ฉฐ, 1๋ฒˆ ์นด๋“œ๊ฐ€ ์ œ์ผ ์œ„์—, N๋ฒˆ ์นด๋“œ๊ฐ€ ์ œ์ผ ์•„๋ž˜์ธ ์ƒํƒœ๋กœ ์ˆœ์„œ๋Œ€๋กœ ์นด๋“œ๊ฐ€ ๋†“์—ฌ ์žˆ๋‹ค. ์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ์นด๋“œ๊ฐ€ ํ•œ ์žฅ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. ์šฐ์„ , ์ œ์ผ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ๋ฐ”๋‹ฅ์— ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ ๋‹ค์Œ, ์ œ์ผ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ์ œ์ผ ์•„๋ž˜์— ์žˆ๋Š” ์นด๋“œ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด N=4์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์นด๋“œ๋Š” ์ œ์ผ ์œ„์—์„œ๋ถ€ํ„ฐ 1234 ์˜ ์ˆœ์„œ๋กœ ๋†“์—ฌ์žˆ๋‹ค. 1์„ ๋ฒ„๋ฆฌ๋ฉด 234๊ฐ€ ๋‚จ๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ 2๋ฅผ ์ œ์ผ ์•„๋ž˜๋กœ ์˜ฎ๊ธฐ๋ฉด 342๊ฐ€ ๋œ๋‹ค. 3์„ ๋ฒ„๋ฆฌ๋ฉด 42๊ฐ€ ๋˜๊ณ , 4๋ฅผ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด 24๊ฐ€ ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ 2๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋‚˜๋ฉด, ๋‚จ๋Š” ์นด๋“œ๋Š” 4๊ฐ€ ๋œ๋‹ค. N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ œ์ผ ๋งˆ์ง€๋ง‰์— ๋‚จ๊ฒŒ ๋˜๋Š” ์นด๋“œ๋ฅผ ๊ตฌํ•˜๋Š” ..
[JavaScript/section 10] 05 - ์ตœ๋Œ€์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ ์ตœ๋Œ€์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ(๋ƒ…์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜) ์ด๋ฒˆ ์ •๋ณด์˜ฌ๋ฆผํ”ผ์•„๋“œ๋Œ€ํšŒ์—์„œ ์ข‹์€ ์„ฑ์ ์„ ๋‚ด๊ธฐ ์œ„ํ•˜์—ฌ ํ˜„์ˆ˜๋Š” ์„ ์ƒ๋‹˜์ด ์ฃผ์‹  N๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๊ณ  ํ•œ๋‹ค. ๊ฐ ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์„ ํ’€์—ˆ์„ ๋•Œ ์–ป๋Š” ์ ์ˆ˜์™€ ํ‘ธ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ์ œํ•œ ์‹œ๊ฐ„ M ์•ˆ์— N๊ฐœ์˜ ๋ฌธ์ œ ์ค‘ ์ตœ๋Œ€์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค. (ํ•ด๋‹น ๋ฌธ์ œ๋Š” ํ•ด๋‹น ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉด ํ‘ธ๋Š” ๊ฑธ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค. ํ•œ ์œ ํ˜•๋‹น ํ•œ ๊ฐœ๋งŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค.) ์ž…๋ ฅ์„ค๋ช… ์ฒซ ๋ฒˆ์งธ ์ค„์— ๋ฌธ์ œ์˜ ๊ฐœ์ˆ˜ N(1
[JavaScript/section 10] 04 - ๋™์ „๊ตํ™˜
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ ๋™์ „๊ตํ™˜(๋ƒ…์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜) ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋‹จ์œ„์˜ ๋™์ „๋“ค์ด ์ฃผ์–ด์ ธ ์žˆ์„๋•Œ ๊ฑฐ์Šค๋ฆ„๋ˆ์„ ๊ฐ€์žฅ ์ ์€ ์ˆ˜์˜ ๋™์ „์œผ๋กœ ๊ตํ™˜ํ•ด์ฃผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฃผ๋ฉด ๋˜๋Š”๊ฐ€? ๊ฐ ๋‹จ์œ„์˜ ๋™์ „์€ ๋ฌดํ•œ์ • ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ์„ค๋ช… ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๋™์ „์˜ ์ข…๋ฅ˜๊ฐœ์ˆ˜ N(1
[JavaScript/section 10] 03 - ์ตœ๋Œ€ ๋ถ€๋ถ„ ์ฆ๊ฐ€ ์ˆ˜์—ด
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ ์ตœ๋Œ€ ๋ถ€๋ถ„ ์ฆ๊ฐ€์ˆ˜์—ด(LIS) N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ์ค‘์—์„œ ๊ฐ€์žฅ ๊ธธ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š”(์ž‘์€ ์ˆ˜์—์„œ ํฐ ์ˆ˜๋กœ) ์›์†Œ๋“ค์˜ ์ง‘ํ•ฉ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›์†Œ๊ฐ€ 2, 7, 5, 8, 6, 4, 7, 12, 3์ด๋ฉด ๊ฐ€์žฅ ๊ธธ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋„๋ก ์›์†Œ๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ๋ฝ‘์•„๋‚ด๋ฉด 2, 5, 6, 7, 12๋ฅผ ๋ฝ‘์•„๋‚ด์–ด ๊ธธ์ด๊ฐ€ 5์ธ ์ตœ๋Œ€ ๋ถ€๋ถ„ ์ฆ๊ฐ€ ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ์„ค๋ช… ์ฒซ์งธ ์ค„์€ ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ˆ˜ N(1= 0; j--) { if (arr[j] < arr[i] && max < dy[j]) { max = dy[j]; } } dy[i] = max + 1; } answer = Math.max(...dy); return answer; } let arr = [2, 7, 5, 8, 6, 4, 7, 12,..
[JavaScript/section 10] 02 - ๋Œ๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 02 - ๋Œ๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ(DP) ์ฒ ์ˆ˜๋Š” ํ•™๊ต์— ๊ฐ€๋Š”๋ฐ ๊ฐœ์šธ์„ ๋งŒ๋‚ฌ๋‹ค. ๊ฐœ์šธ์€ N๊ฐœ์˜ ๋Œ๋กœ ๋‹ค๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋†“์•˜๋‹ค. ์ฒ ์ˆ˜๋Š” ๋Œ ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ ๋•Œ ํ•œ ๋ฒˆ์— ํ•œ ์นธ ๋˜๋Š” ๋‘ ์นธ์”ฉ ๊ฑด๋„ˆ๋›ฐ๋ฉด์„œ ๋Œ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค. ์ฒ ์ˆ˜๊ฐ€ ๊ฐœ์šธ์„ ๊ฑด๋„ˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ช‡๊ฐ€์ง€์ผ๊นŒ? ๐Ÿ“ ์†Œ์Šค ์ฝ”๋“œ ์ฐธ๊ณ ) ๊ณ„๋‹จ์˜ค๋ฅด๊ธฐ function solution(n) { let answer = 0; let dy = Array.from({ length: n + 2 }, () => 0); dy[1] = 1; dy[2] = 2; for (let i = 3; i
[JavaScript/section 10] 01 - ๊ณ„๋‹จ์˜ค๋ฅด๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 01 - ๊ณ„๋‹จ์˜ค๋ฅด๊ธฐ(๋™์  ๊ณ„ํš๋ฒ•) ์ฒ ์ˆ˜๋Š” ๊ณ„๋‹จ์„ ์˜ค๋ฅผ ๋•Œ ํ•œ ๋ฒˆ์— ํ•œ ๊ณ„๋‹จ ๋˜๋Š” ๋‘ ๊ณ„๋‹จ์”ฉ ์˜ฌ๋ผ๊ฐ„๋‹ค. ๋งŒ์•ฝ ์ด 4๊ณ„๋‹จ์„ ์˜ค๋ฅธ๋‹ค๋ฉด ๊ทธ ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋Š” 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2๋กœ 5๊ฐ€์ง€์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด N๊ณ„๋‹จ์ผ ๋•Œ ์ฒ ์ˆ˜๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋Š” ๋ช‡ ๊ฐ€์ง€์ธ๊ฐ€? ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ•(DFS, DP) DFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜๋‹ค. ์ •๋‹ต์€ ํ›Œ๋ฅญํ•˜๊ฒŒ๋„ ์ž˜ ๋‚˜์˜จ๋‹ค ๐Ÿ‘ ํ•˜์ง€๋งŒ n์˜ ๊ฐ’์ด ์ปค์ง„๋‹ค๋ฉด...โ“ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋™์  ๊ณ„ํš๋ฒ•(dynamic programming, DP)์ด ์กด์žฌํ•œ๋‹ค. function solution(n) { let answer = 0; function DFS(sum) { if (sum > n)..
[JavaScript/section 9] 07 - ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ(BFS)
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 07 - ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ(BFS ํ™œ์šฉ) N*N์˜ ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ์˜ ์ง€๋„๊ฐ€ ๊ฒฉ์žํŒ์˜ ์ •๋ณด๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์„ฌ์€ 1๋กœ ํ‘œ์‹œ๋˜์–ด ์ƒํ•˜์ขŒ์šฐ์™€ ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ, 0์€ ๋ฐ”๋‹ค์ด๋‹ค. ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ์— ๋ช‡ ๊ฐœ์˜ ์„ฌ์ด ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋งŒ์•ฝ ์œ„์™€ ๊ฐ™๋‹ค๋ฉด ์„ฌ์˜ ๊ฐœ์ˆ˜๋Š” ์ด 5๊ฐœ์ด๋‹ค. ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ(DFS) ๋ฌธ์ œ์™€ ๊ฐ™์ง€๋งŒ ์ด๋ฒˆ์—๋Š” BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ํ’€์–ด๋ณด์•˜๋‹ค. ์˜์—ญ์„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ณธ์ธ์—๊ฒŒ ํŽธํ•œ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ํ’€๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค..๐Ÿค” ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ• ์ด์ค‘ for ๋ฌธ์„ ๋Œ๋ฉด์„œ 1์ด ๋‚˜์˜จ๋‹ค๋ฉด ์„ฌ์„ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ฐฐ์—ด์—์„œ ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ 0์œผ๋กœ ์žฌํ• ๋‹นํ•˜๊ณ  answer++์„ ํ•œ๋‹ค. ๋˜ํ•œ, ๋„“์ด ์šฐ์„  ํƒ์ƒ‰์„ ์œ„ํ•ด ํ์— ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. while ๋ฌธ์„ ๋Œ๋ฉด์„œ ํ์—์„œ shift ํ•œ ์ขŒํ‘œ์— ๋Œ€ํ•ด ..
[JavaScript/section 9] 06 - ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ(DFS)
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 06 - ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ(DFS ํ™œ์šฉ) N*N์˜ ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ์˜ ์ง€๋„๊ฐ€ ๊ฒฉ์žํŒ์˜ ์ •๋ณด๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์„ฌ์€ 1๋กœ ํ‘œ์‹œ๋˜์–ด ์ƒํ•˜์ขŒ์šฐ์™€ ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ, 0์€ ๋ฐ”๋‹ค์ด๋‹ค. ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ์— ๋ช‡ ๊ฐœ์˜ ์„ฌ์ด ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋งŒ์•ฝ ์œ„์™€ ๊ฐ™๋‹ค๋ฉด ์„ฌ์˜ ๊ฐœ์ˆ˜๋Š” ์ด 5๊ฐœ์ด๋‹ค. ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ• ๋ฏธ๋กœ ํƒ์ƒ‰ ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ ๋ฌธ์ œ์ด๋ฏ€๋กœ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๋“ฏํ•˜๋‹ค. ์ด์ค‘ for ๋ฌธ์„ ๋Œ๋ฉด์„œ 1์ด ๋‚˜์˜จ๋‹ค๋ฉด ์„ฌ์„ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ฐฐ์—ด์—์„œ ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ 0์œผ๋กœ ์žฌํ• ๋‹นํ•˜๊ณ  answer++์„ ํ•œ๋‹ค. ํ•ด๋‹น ์ขŒํ‘œ์— ๋Œ€ํ•ด DFS๋ฅผ ๋Œ๋ฉด์„œ ์ƒํ•˜์ขŒ์šฐ์™€ ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ขŒํ‘œ๊ฐ€ ์žˆ๋Š”์ง€ ํƒ์ƒ‰ํ•œ๋‹ค. ์—ฐ๊ฒฐ๋œ ์ขŒํ‘œ๊ฐ€ ์žˆ๋‹ค๋ฉด 0์œผ๋กœ ์žฌ ํ• ๋‹นํ•˜๊ณ  ์—ฐ๊ฒฐ๋œ ์ขŒํ‘œ๋กœ ์ด๋™ํ•œ๋‹ค. ๋” ์ด์ƒ ์—ฐ๊ฒฐ๋œ ์ขŒํ‘œ๊ฐ€ ์—†๋‹ค๋ฉด DFS ํ•จ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ข…๋ฃŒํ•˜๊ณ  ์ด์ค‘ for ๋ฌธ์„..
_์„ฑํ˜ธ_
'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก