DFS

Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 9] 06 - ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ(DFS)

๐Ÿ“Œ 06 - ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ(DFS ํ™œ์šฉ) N*N์˜ ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ์˜ ์ง€๋„๊ฐ€ ๊ฒฉ์žํŒ์˜ ์ •๋ณด๋กœ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์„ฌ์€ 1๋กœ ํ‘œ์‹œ๋˜์–ด ์ƒํ•˜์ขŒ์šฐ์™€ ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ, 0์€ ๋ฐ”๋‹ค์ด๋‹ค. ์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ์— ๋ช‡ ๊ฐœ์˜ ์„ฌ์ด ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋งŒ์•ฝ ์œ„์™€ ๊ฐ™๋‹ค๋ฉด ์„ฌ์˜ ๊ฐœ์ˆ˜๋Š” ์ด 5๊ฐœ์ด๋‹ค. ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ• ๋ฏธ๋กœ ํƒ์ƒ‰ ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ ๋ฌธ์ œ์ด๋ฏ€๋กœ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๋“ฏํ•˜๋‹ค. ์ด์ค‘ for ๋ฌธ์„ ๋Œ๋ฉด์„œ 1์ด ๋‚˜์˜จ๋‹ค๋ฉด ์„ฌ์„ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ฐฐ์—ด์—์„œ ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ 0์œผ๋กœ ์žฌํ• ๋‹นํ•˜๊ณ  answer++์„ ํ•œ๋‹ค. ํ•ด๋‹น ์ขŒํ‘œ์— ๋Œ€ํ•ด DFS๋ฅผ ๋Œ๋ฉด์„œ ์ƒํ•˜์ขŒ์šฐ์™€ ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ขŒํ‘œ๊ฐ€ ์žˆ๋Š”์ง€ ํƒ์ƒ‰ํ•œ๋‹ค. ์—ฐ๊ฒฐ๋œ ์ขŒํ‘œ๊ฐ€ ์žˆ๋‹ค๋ฉด 0์œผ๋กœ ์žฌ ํ• ๋‹นํ•˜๊ณ  ์—ฐ๊ฒฐ๋œ ์ขŒํ‘œ๋กœ ์ด๋™ํ•œ๋‹ค. ๋” ์ด์ƒ ์—ฐ๊ฒฐ๋œ ์ขŒํ‘œ๊ฐ€ ์—†๋‹ค๋ฉด DFS ํ•จ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ข…๋ฃŒํ•˜๊ณ  ์ด์ค‘ for ๋ฌธ์„..

Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 9] 03 - ๋ฏธ๋กœ ํƒ์ƒ‰

๐Ÿ“Œ 03 - ๋ฏธ๋กœ ํƒ์ƒ‰(DFS) 7*7 ๊ฒฉ์žํŒ ๋ฏธ๋กœ๋ฅผ ํƒˆ์ถœํ•˜๋Š” ๊ฒฝ๋กœ์˜ ๊ฐ€์ง“์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ถœ๋ฐœ์ ์€ ๊ฒฉ์ž์˜ (1, 1) ์ขŒํ‘œ์ด๊ณ , ํƒˆ์ถœ ๋„์ฐฉ์ ์€ (7, 7) ์ขŒํ‘œ์ด๋‹ค. ๊ฒฉ์žํŒ์˜ 1์€ ๋ฒฝ์ด๊ณ , 0์€ ํ†ต๋กœ์ด๋‹ค. ๊ฒฉ์žํŒ์˜ ์›€์ง์ž„์€ ์ƒํ•˜์ขŒ์šฐ๋กœ๋งŒ ์›€์ง์ธ๋‹ค. ๋ฏธ๋กœ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด ์œ„์˜ ์ง€๋„์—์„œ ์ถœ๋ฐœ์ ์—์„œ ๋„์ฐฉ์ ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋Š” 8๊ฐ€์ง€ ์ด๋‹ค. ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ• nx - ์ด๋™ํ•  ํ–‰, ny - ์ด๋™ํ•  ์—ด ์ƒํ•˜์ขŒ์šฐ๋กœ๋งŒ ์›€์ง์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 4๊ฐ€์ง€์ด๋‹ค. ์žฌ๊ท€๋ฅผ ๋Œ๋ฉด์„œ ๋‹ค์Œ์— ์ด๋™ํ•  ์ขŒํ‘œ๊ฐ€ ๊ฒฉ์žํŒ์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•œ ๋‹ค์Œ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ ํ†ต๋กœ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธ ํ•ด์•ผ ํ•œ๋‹ค. board[nx][ny] (์ด๋™ํ•  ์ขŒํ‘œ)๊ฐ€ 0์ด๋ผ๋ฉด ์ด๋™์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ์ด๋™ํ•˜๊ณ  ์ด๋™ํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด b..

Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 9] 02 - ๊ฒฝ๋กœ ํƒ์ƒ‰(์ธ์ ‘ ๋ฆฌ์ŠคํŠธ)

๐Ÿ“Œ 02 - ๊ฒฝ๋กœ ํƒ์ƒ‰(์ธ์ ‘ ๋ฆฌ์ŠคํŠธ) ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง€๋ฉด 1๋ฒˆ ์ •์ ์—์„œ N๋ฒˆ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ์˜ ๊ฐ€์ง€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ์•„๋ž˜ ๊ทธ๋ž˜ํ”„์—์„œ 1๋ฒˆ ์ •์ ์—์„œ 5๋ฒˆ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๊ฐ€์ง€ ์ˆ˜๋Š” ์ด 6๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋ฌธ์ œ์™€ ๊ฐ™์€ ๋ฌธ์ œ์ด์ง€๋งŒ ์ธ์ ‘ ํ–‰๋ ฌ์ด ์•„๋‹Œ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ •์ ์ด ์ ๋‹ค๋ฉด ์ธ์ ‘ ํ–‰๋ ฌ๋กœ ํ’€์–ด๋„ ๋˜์ง€๋งŒ ๋ฌด์ˆ˜ํžˆ ๋งŽ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„, ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ฆ๊ฐ€์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๐Ÿ’ฉ๐Ÿ’ฉ ์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค. v ์ •์ (ํ–‰)์—์„œ ์ด๋™ ๊ฐ€๋Šฅํ•œ ์ •์ ์„ ๊ฐ๊ฐ ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•œ๋‹ค. ๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ• v - ํ˜„์žฌ ์ •์ , i - ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค, ch - ํ•ด๋‹น ์ •์ ์„ ์ง€๋‚ฌ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๋ฐฐ์—ด graph[v][i] - ํ˜„์žฌ ์ •์ ์—์„œ ์ด๋™ํ•  ..

Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 9] 01 - ๊ฒฝ๋กœ ํƒ์ƒ‰(์ธ์ ‘ ํ–‰๋ ฌ)

๐Ÿ“Œ 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]..

Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 8] 15 - ์ˆ˜๋“ค์˜ ์กฐํ•ฉ

๐Ÿ“Œ 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,..

Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 8] 14 - ์กฐํ•ฉ ๊ตฌํ•˜๊ธฐ

๐Ÿ“Œ 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..

Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 8] 12 - ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ ์ˆ˜

๐Ÿ“Œ 12 - ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ ์ˆ˜(๋ฉ”๋ชจ์ด์ œ์ด์…˜) nCr = n! / (n - r)!r! ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ณต์‹์„ ์“ฐ์ง€ ์•Š๊ณ  ๋‹ค์Œ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ์กฐํ•ฉ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ž…๋ ฅ์„ค๋ช… ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ n(3

Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 8] 11 - ํŒฉํ† ๋ฆฌ์–ผ

๐Ÿ“Œ 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));

ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด
'DFS' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก