[JavaScript/section 9] 01 - ๊ฒฝ๋กœ ํƒ์ƒ‰(์ธ์ ‘ ํ–‰๋ ฌ)
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 01 - ๊ฒฝ๋กœ ํƒ์ƒ‰(DFS-์ธ์ ‘ ํ–‰๋ ฌ: ๋…ธ๋“œ ๊ฐœ์ˆ˜๊ฐ€ ์ ์„ ๋•Œ) ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง€๋ฉด 1๋ฒˆ ์ •์ ์—์„œ N๋ฒˆ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ์˜ ๊ฐ€์ง€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ์•„๋ž˜ ๊ทธ๋ž˜ํ”„์—์„œ 1๋ฒˆ ์ •์ ์—์„œ 5๋ฒˆ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๊ฐ€์ง€ ์ˆ˜๋Š” ์ด 6๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ธ์ ‘ ํ–‰๋ ฌ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. v ์ •์ (ํ–‰)์—์„œ i ์ •์ (์—ด)์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด 1, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด 0์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค. ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ• v - ํ˜„์žฌ ์ •์ , i - ๋งˆ์ง€๋ง‰์œผ๋กœ ๋„๋‹ฌํ•ด์•ผํ•˜๋Š” ์ •์  ch - ํ•ด๋‹น ์ •์ ์„ ์ง€๋‚ฌ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๋ฐฐ์—ด ์žฌ๊ท€๋ฅผ ๋Œ๋ฉด์„œ graph[v][i]๋Š” 1์ด๊ณ  ch[i]๋Š” 0์ด๋ผ๋ฉด v ์ •์ ์—์„œ i ์ •์ ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํ•ด๋‹น ์ •์ ์œผ๋กœ ์ด๋™ํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ch[i]..
[JavaScript/section 8] 15 - ์ˆ˜๋“ค์˜ ์กฐํ•ฉ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 15 - ์ˆ˜๋“ค์˜ ์กฐํ•ฉ N๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๊ทธ ์ˆซ์ž๋“ค ์ค‘ K๊ฐœ๋ฅผ ๋ฝ‘๋Š” ์กฐํ•ฉ์˜ ํ•ฉ์ด ์ž„์˜์˜ ์ •์ˆ˜ M์˜ ๋ฐฐ์ˆ˜์ธ ๊ฐœ์ˆ˜๋Š” ๋ช‡ ๊ฐœ๊ฐ€ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 5๊ฐœ์˜ ์ˆซ์ž 2 4 5 8 12๊ฐ€ ์ฃผ์–ด์ง€๊ณ , 3๊ฐœ๋ฅผ ๋ฝ‘์€ ์กฐํ•ฉ์˜ ํ•ฉ์ด 6์˜ ๋ฐฐ์ˆ˜์ธ ์กฐํ•ฉ์„ ์ฐพ์œผ๋ฉด 4+8+12, 2+4+12๋กœ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ• ๐Ÿ˜ต ๋‚˜์˜ ํ’€์ด ๋ฐฉ๋ฒ• if๋ฌธ ์•ˆ์— 2๊ฐœ์˜ ์กฐ๊ฑด์„ ๊ฐ™์ด ์ฃผ์–ด L(๋ ˆ๋ฒจ)์ด k(๋ฝ‘๋Š” ๊ฐœ์ˆ˜)์™€ ๊ฐ™๋”๋ผ๋„ sum์ด 6์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด else๋ฌธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜ค์ง€๋งŒ ์‹œ๊ฐ„์„ ์žก์•„๋จน์„ ์ˆ˜ ์žˆ๋‹ค.๐Ÿคฌ L์ด k์™€ ๊ฐ™๋‹ค๋ฉด else ๋ฌธ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ if๋ฌธ ๋‚ด๋ถ€์—์„œ sum์ด 6์˜ ๋ฐฐ์ˆ˜์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋น ์ ธ๋‚˜์™€์•ผ ํ•œ๋‹ค. function solution(n, k, arr,..
[JavaScript/section 8] 14 - ์กฐํ•ฉ ๊ตฌํ•˜๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 14 - ์กฐํ•ฉ ๊ตฌํ•˜๊ธฐ 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ ํžŒ ๊ตฌ์Šฌ์ด ์žˆ๋‹ค. ์ด ์ค‘ M๊ฐœ๋ฅผ ๋ฝ‘๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. M๊ฐœ๋ฅผ ๋ฝ‘๋Š”๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ์กฐํ•ฉ์„ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค. N์ด 4์ด๊ณ  M์ด 2์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์žโ— ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด L1์ด ์ •ํ•ด์ง€๋ฉด L2๋Š” L1 + 1๋ถ€ํ„ฐ N๊นŒ์ง€ for ๋ฌธ์„ ๋Œ๋ฉด์„œ ์ •ํ•ด์ง„๋‹ค. ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ• s๋Š” for๋ฌธ์—์„œ ์ดˆ๊ธฐ๊ฐ’์— ํ•ด๋‹นํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ๋ฆผ์œผ๋กœ ํ•œ๋ฒˆ ์ดํ•ดํ•˜๊ณ  ์™ธ์šฐ๋„๋ก ํ•˜์ž(์ค‘์š”โ—) L(๋ ˆ๋ฒจ)์ด m๊ณผ ๊ฐ™๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๊ฒฝ์šฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋ฏ€๋กœ tmp๋ฅผ ์–•์€ ๋ณต์‚ฌ(slice)ํ•˜์—ฌ answer์— ์ถ”๊ฐ€ํ•œ๋‹ค. function solution(n, m) { let answer = []; let tmp = Array.from({ length: m }, () => 0); function DFS..
[JavaScript/section 8] 13 - ์ˆ˜์—ด ์ถ”์ธกํ•˜๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 13 - ์ˆ˜์—ด ์ถ”์ธกํ•˜๊ธฐ ๊ฐ€์žฅ ์œ—์ค„์— 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ํ•œ ๊ฐœ์”ฉ ์ ํ˜€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•์ฒ˜๋Ÿผ ์œ„์˜ ๋‘ ๊ฐœ๋ฅผ ๋”ํ•œ ๊ฐ’์ด ์ €์žฅ๋˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด N์ด 4์ด๊ณ  ๊ฐ€์žฅ ์œ—์ค„์— 3 1 2 4๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ผ๊ฐํ˜•์ด ๊ทธ๋ ค์ง„๋‹ค. N๊ณผ ๊ฐ€์žฅ ๋ฐ‘์— ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ ธ ์žˆ์„ ๋•Œ ๊ฐ€์žฅ ์œ—์ค„์— ์žˆ๋Š” ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋‹จ, ๋‹ต์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์ „์ˆœ์œผ๋กœ ๊ฐ€์žฅ ์•ž์— ์˜ค๋Š” ๊ฒƒ์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ž…๋ ฅ์˜ˆ์ œ 4 16 ์ถœ๋ ฅ์˜ˆ์ œ 3 1 2 4 ์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์•Œ์•„์•ผํ•œ๋‹ค. ๋นจ๊ฐ„ ์ƒ‰๊ณผ ๊ฐ™์ด ์ˆœ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ n-1C0, n-1C1, n-1C2, n-1C3๋ฒˆ ๋”ํ•ด์ง„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ ์ˆœ์—ด ๊ตฌ..
[JavaScript/section 8] 12 - ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ ์ˆ˜
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 12 - ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ ์ˆ˜(๋ฉ”๋ชจ์ด์ œ์ด์…˜) nCr = n! / (n - r)!r! ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ณต์‹์„ ์“ฐ์ง€ ์•Š๊ณ  ๋‹ค์Œ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ์กฐํ•ฉ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ž…๋ ฅ์„ค๋ช… ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ n(3
[JavaScript/section 8] 11 - ํŒฉํ† ๋ฆฌ์–ผ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 11 - ํŒฉํ† ๋ฆฌ์–ผ(DFS) ์ž์—ฐ์ˆ˜ N์„ ์ž…๋ ฅํ•˜๋ฉด N! ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. N! = N * (N - 1) * (N - 2) * ... * 1์ด๋‹ค. ๋งŒ์•ฝ N์ด 5๋ผ๋ฉด 5! = 5 * 4 * 3 * 2 * 1 = 120์ด๋‹ค. ๐Ÿ‘ ํ’€์ด ๋ฐฉ๋ฒ• ์žฌ๊ท€๋ฅผ ๋Œ๋ฉด์„œ n์ด 1๊ณผ ๊ฐ™๋‹ค๋ฉด 1์„ returnํ•œ๋‹ค. function solution(n) { let answer; function DFS(n) { if (n === 1) return 1; else return n * DFS(n - 1); } answer = DFS(n); return answer; } console.log(solution(5));
[JavaScript/section 8] 10 - ์ˆœ์—ด ๊ตฌํ•˜๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 10 - ์ˆœ์—ด ๊ตฌํ•˜๊ธฐ 10์ดํ•˜์˜ N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ด ์ค‘ M๊ฐœ๋ฅผ ๋ฝ‘์•„ ์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ค‘๋ณต์ˆœ์—ด ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ์™€ ๋‹ค๋ฅธ ์ ์€ ์ค‘๋ณต์—†์ด ์ˆœ์„œ์— ์ƒ๊ด€์žˆ๊ฒŒ ์„ ํƒํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๋งŒ์•ฝ 3๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ์ด ์ค‘ 2๊ฐœ๋ฅผ ๋ฝ‘์•„ ์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ด 6๊ฐ€์ง€์ด๋‹ค. ๐Ÿ‘ ํ’€์ด ๋ฐฉ๋ฒ• ch ๋ฐฐ์—ด์€ tmp ๋ฐฐ์—ด์— ์–ด๋–ค ์ˆ˜๊ฐ€ ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด์ด๋‹ค. (์ค‘๋ณต ๊ฒ€์ฆ) ch[i]์˜ ๊ฐ’์ด 0์ด๋ฉด ์„ ํƒ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์„ ํƒํ•ด๋„ ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋ฐ˜๋Œ€๋กœ ch[i]์˜ ๊ฐ’์ด 1์ด๋ฉด ์ด๋ฏธ ์„ ํƒ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๊ฑด๋„ˆ๋›ด๋‹ค. L(ํŠธ๋ฆฌ์˜ ๋ ˆ๋ฒจ)์ด m๊ณผ ๊ฐ™๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๊ฒฝ์šฐ๊ฐ€ ์™„์„ฑ๋œ ๊ฒƒ์ด๋ฏ€๋กœ tmp ๋ฐฐ์—ด์„ ์–•์€ ๋ณต์‚ฌํ•˜์—ฌ answer ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•œ๋‹ค. DFS ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ๋..
[JavaScript/section 8] 09 - ๋™์ „๊ตํ™˜
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 09 - ๋™์ „๊ตํ™˜(DFS) ์—ฌ๋Ÿฌ ๋‹จ์œ„์˜ ๋™์ „๋“ค์ด ์ฃผ์–ด์ ธ ์žˆ์„๋•Œ ๊ฑฐ์Šค๋ฆ„๋ˆ์„ ๊ฐ€์žฅ ์ ์€ ์ˆ˜์˜ ๋™์ „์œผ๋กœ ๊ตํ™˜ํ•ด์ฃผ๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๊ฐ ๋‹จ์œ„์˜ ๋™์ „์€ ๋ฌดํ•œ์ • ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ์˜ˆ์ œ 1 2 5 15 ์ถœ๋ ฅ์˜ˆ์ œ 3 ์„ค๋ช…: 5 5 5 ๋™์ „ 3๊ฐœ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ‘ ํ’€์ด ๋ฐฉ๋ฒ• ์ค‘๋ณต์ˆœ์—ด ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ์ดํ•ดํ•˜๊ณ  ์˜จ๋‹ค๋ฉด ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋‹จ, ์ด๋ฒˆ์—๋Š” ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ์•ผ ํ•˜๋Š” ์‹œ์ ์„ ์ž˜ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•œ๋‹ค. ๋ถˆํ•„์š”ํ•œ ํƒ์ƒ‰๊นŒ์ง€ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋ฏ€๋กœ answer(๊ทธ ์‹œ์ ์— ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜)๋ณด๋‹ค L(๋ ˆ๋ฒจ, ๋™์ „์˜ ๊ฐœ์ˆ˜)์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ๋” ์ด์ƒ ๊นŠ์ด ํƒ์ƒ‰ํ•  ํ•„์š” ์—†์ด return ํ•œ๋‹ค. sum(๋™์ „์˜ ํ•ฉ)์ด..
_์„ฑํ˜ธ_
๐ŸŒฑ ์„ฑํ˜ธ ๋ธ”๋กœ๊ทธ