๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (79)

728x90

๐Ÿ‘ฉ๐Ÿป‍๐ŸŒพ

Chap 5. Backtracking

Backtracking ํ•ด๋ฅผ ์ฐพ๋Š” ๋„์ค‘ ๋ง‰ํžˆ๋ฉด ์ด์ „ ๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ€์„œ ํ•ด๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ธฐ๋ฒ• Backtracking์„ ์‚ฌ์šฉํ•˜๋Š” 3๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. 1. N-queens problem - N x N ํฌ๊ธฐ์˜ ์ฒด์Šค๋ณด๋“œํŒ์— N๊ฐœ์˜ ํ€ธ๋“ค์„ ์„œ๋กœ ์œ„ํ˜‘ํ•˜์ง€ ์•Š๊ฒŒ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฌธ์ œ 4 queens problem์ผ ๋•Œ 16๊ฐœ์˜ ์ž๋ฆฌ ์ค‘ 4์ž๋ฆฌ๋ฅผ ๋ฝ‘๋Š” ๊ฒฝ์šฐ : C(16, 4) = 1820 ๋‘ ํ€ธ์ด ๊ฐ™์€ ํ–‰, ์—ด ๋˜๋Š” ๋Œ€๊ฐ์„ ์— ์œ„์น˜ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฐฐ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ : 4 x 4 x 4 x 4 = 256 : iํ–‰ j์—ด์— ํ€ธ์ด ์œ„์น˜ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ์™€, ์—๋งŒ ํ€ธ์ด ์œ„์น˜ํ•  ๋•Œ -> ํ•˜์œ„ ๋…ธ๋“œ์—์„œ ๋‹ต์„ ๋ฐœ๊ฒฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ promising , , ์— ํ€ธ๋“ค์ด ์œ„์น˜ํ•  ๋•Œ, ๊ฐ™์€ ์—ด์— ์œ„์น˜ํ•˜๋ฏ€๋กœ ๋‹ต์ด ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ nonpromisi..

Study/Algorithm 2023. 6. 4. 20:46
[JS/React] 1๏ธโƒฃ ๊ฐ„๋‹จํ•œ ์ผ๊ธฐ์žฅ ๋งŒ๋“ค๊ธฐ

ํฌ์ŠคํŒ…์„ ํ•˜๊ธฐ์— ์•ž์„œ ์—ฌ๋‹ด ํ•˜๋‚˜๋ฅผ ์–˜๊ธฐํ•˜์ž๋ฉด,๋”๋ณด๊ธฐ์ธํ”„๋Ÿฐ์— ๋ฆฌ์•กํŠธ ๊ฐ•์˜๋“ค์ด ๊ฝค ๋งŽ๊ณ  ๊ฐ๊ฐ์˜ ๊ฐ•์˜๋“ค์€ ํ•ด๋‹น ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉด ์ตœ์†Œ 1๊ฐœ์—์„œ ๋งŽ๊ฒŒ๋Š” 4-5๊ฐœ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๋‚ด๊ฐ€ ์ˆ˜๊ฐ• ์ค‘์ธ ๋ฆฌ์•กํŠธ ๊ฐ•์˜๋Š” '๊ฐ์ • ์ผ๊ธฐ์žฅ' ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ ์ˆ˜๋งŽ์€ ๊ฐ•์˜๋“ค ์ค‘ ๋‚ด๊ฐ€ ์ด ๊ฐ•์˜๋ฅผ ์„ ํƒํ•œ ์ด์œ ๊ฐ€ ์ข€ ํ™ฉ๋‹นํ•˜๋‹ค.๋Œ€ํ•™๊ต 1ํ•™๋…„ ๋•๊ฐ€ ์•ฑ์Šคํ† ์–ด ์ธ๊ธฐ ์œ ๋ฃŒ ์•ฑ์— 'MOODA'๋ž€ ๊ฐ์ •์„ ๊ธฐ๋กํ•ด์„œ ์ผ๊ธฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ์ด ์žˆ์—ˆ๋‹ค. ์•ฑ ์•„์ด์ฝ˜๊ณผ ์ƒ์„ธ ํ™”๋ฉด ์‚ฌ์ง„์„ ๋ดค์„ ๋•Œ, UI๊ฐ€ ์ƒ๋‹นํžˆ ์•„๊ธฐ์ž๊ธฐ(์•„๊ธฐ์ž๊ธฐํ•œ ๊ฑฐ์— ๋งˆ์Œ์ด ์•ฝํ•œ ํŽธ)ํ•˜์—ฌ ๊ตฌ๋งคํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  2๋…„ ๋™์•ˆ์€ ๊ฝค ์ž˜ ์‚ฌ์šฉํ•œ ๊ฑฐ ๊ฐ™๋‹ค.์—ฌํŠผ, ๊ทธ๋ž˜์„œ ์กธ์—…์ž‘ํ’ˆ์—์„œ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ผ์„œ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ณด๋Š” ํ„ฐ๋ผ ๋ฆฌ์•กํŠธ ๊ฐ•์˜๋ฅผ ์ฐพ์•„๋ณด๊ณ  ์žˆ์—ˆ๊ณ , ํ•ด๋‹น ๊ฐ•์˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ..

Language/JavaScript 2023. 4. 13. 16:25
[์ธํ”„๋Ÿฐ/JS] ๋™๊ธฐ & ๋น„๋™๊ธฐ ๊ฐœ๋…

์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋Š” ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ผ ๋•Œ๋Š” ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋‹ค๋ฆฐ๋‹ค. (= ์ฆ‰, ๋จผ์ € ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ๋‹ค ์‹คํ–‰ํ•˜๊ณ  ๋‚œ ๋’ค, ๊ทธ ๋’ค์— ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•จ) โžก๏ธ ๋™๊ธฐ ๋ฐฉ์‹์˜ ์ฒ˜๋ฆฌ ์ด๋Ÿฐ ๋™๊ธฐ์  ์ฒ˜๋ฆฌ์˜ ๋‹จ์ ์€ ์œ„ ์‚ฌ์ง„์˜ taskB์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ์ž‘์—…์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ, ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋ชจ๋“  ์ž‘์—…์ด ์˜ฌ์Šคํƒ‘ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ฐ˜์ ์ธ ์ž‘์—…์˜ ํ๋ฆ„์ด ๋Š๋ ค์ง„๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค. โžก๏ธ ๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์˜ ๋ฌธ์ œ์  ๊ทธ๋ ‡๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ผ๊พผ Thread๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ธ 'MultiThread' ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™์‹œํ‚ค๋ฉด ์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ž‘์—… ๋ถ„ํ• ์ด ๊ฐ€๋Šฅํ•˜๋‹ˆ๊นŒ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ์žˆ์–ด๋„ ๋‹ค๋ฅธ ์ผ๊พผ Thread์—๊ฒŒ ์ž‘์—…์„ ์ง€์‹œํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ๊ดœ์ฐฎ์ง€ ์•Š..

Language/JavaScript 2023. 4. 9. 21:36
[๋ฐฑ์ค€/Python] 18870๋ฒˆ ์ขŒํ‘œ ์••์ถ•

1๏ธโƒฃ ๋ฌธ์ œ ์„ค๋ช… ์ˆ˜์ง์„  ์œ„์— N๊ฐœ์˜ ์ขŒํ‘œ X1, X2, ..., XN์ด ์žˆ๋‹ค. ์ด ์ขŒํ‘œ์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค. Xi๋ฅผ ์ขŒํ‘œ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ X'i์˜ ๊ฐ’์€ Xi > Xj๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. X1, X2, ..., XN์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ X'1, X'2, ..., X'N๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์ž. 2๏ธโƒฃ ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๊ณต๋ฐฑ ํ•œ ์นธ์œผ๋กœ ๊ตฌ๋ถ„๋œ X1, X2, ..., XN์ด ์ฃผ์–ด์ง„๋‹ค. 3๏ธโƒฃ ์ถœ๋ ฅ ์ฒซ์งธ ์ค„์— X'1, X'2, ..., X'N์„ ๊ณต๋ฐฑ ํ•œ ์นธ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์ž‘์„ฑํ•œ ์ฝ”๋“œ import sys import heapq input = sys.stdin.readline n = int(input()) pos = list(map(i..

[JS] ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž…๋ ฅ ๋ฐ›๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•

1๏ธโƒฃ ํŒ์—…์ฐฝ ํ‘œ์‹œํ•˜๊ธฐ alert(๋‚ด์šฉ)// ์•Œ๋ฆผ์ฐฝ ํ‘œ์‹œ confirm(๋‚ด์šฉ)// ํ™•์ธ์ฐฝ ํ‘œ์‹œ โฌ…๏ธ [ํ™•์ธ] ๋ฒ„ํŠผ๊ณผ [์ทจ์†Œ] ๋ฒ„ํŠผ์ด ์žˆ์–ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ๋Š”๊ฐ€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ ๊ฐ€๋Šฅ โฌ…๏ธ ํ™•์ธ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ์‚ฌ์ง„์ฒ˜๋Ÿผ true ๋ฐ˜ํ™˜, ์ทจ์†Œ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด false ๋ฐ˜ํ™˜ prompt(๋‚ด์šฉ)// ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ„๋‹จํ•œ ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ โฌ…๏ธ ์ž…๋ ฅ๊ฐ’ ๋ฐ˜ํ™˜ prompt(๋‚ด์šฉ, ๊ธฐ๋ณธ๊ฐ’)// ๊ธฐ๋ณธ๊ฐ’ ์ง€์ • ๊ฐ€๋Šฅ 2๏ธโƒฃ ์ฝ˜์†”์ฐฝ์— ๋‚ด์šฉ ํ‘œ์‹œ console.log(๋‚ด์šฉ)// ์ฝ˜์†” ์ฐฝ์— ๊ฒฐ๊ณผ ํ‘œ์‹œ 3๏ธโƒฃ ์›น ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์— ๋‚ด์šฉ ํ‘œ์‹œํ•˜๊ธฐ document.write()// ์›น ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์— ๊ฒฐ๊ณผ ํ‘œ์‹œ, DOM์„ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ์œ„์น˜ ์ง€์ •

Language/JavaScript 2023. 3. 21. 20:28
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Python] ์˜์–ด๊ฐ€ ์‹ซ์–ด์š”

์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์ฒ˜์Œ์œผ๋กœ ๋‚ด์žฅํ•จ์ˆ˜ enumerate()๋ฅผ ์‚ฌ์šฉํ•ด๋ด์„œ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด ํฌ์ŠคํŒ…ํ•˜๊ฒŒ ๋๋‹ค. โœ… enumerate() ํ•จ์ˆ˜๋ž€? ๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ์— ์ˆœ์„œ๊ฐ’์„ ๋ถ€์—ฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ๋ฑ์Šค์™€ ์›์†Œ๋กœ ์ด๋ฃจ์–ด์ง„ ํŠœํ”Œ(tuple)๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค -> ์˜ˆ์‹œ ์ฝ”๋“œ๋กœ ํ™•์ธํ•ด๋ณด์ž nums = ["apple", "banana", "pear","strawberry","grape"] for i in enumerate(nums): print(i) ์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ์‹œ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ธ๋ฑ์Šค์™€ ์›์†Œ๋ฅผ ํŠœํ”Œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•ด์ค€๋‹ค. ์ด๋•Œ, ์ธ๋ฑ์Šค์™€ ์›์†Œ๋ฅผ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์–ธํŒฉํ‚น์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. nums = ["apple", "banana", "pear","strawberry","grape"] ..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Python] ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ swapcase()๋ž€ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ์•Œ๊ฒŒ ๋ผ์„œ, ๋Œ€์†Œ๋ฌธ์ž ๊ด€๋ จ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•ด๋‹น ๋ฌธ์ œ ํ’€์ด๋ฅผ ํฌ์ŠคํŒ…ํ•˜๊ฒŒ ๋๋‹ค. โœ… ๋Œ€์†Œ๋ฌธ์ž ๊ด€๋ จ ๋‚ด์žฅํ•จ์ˆ˜ upper() ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ lower() ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ isupper() ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž์ธ์ง€ ํ™•์ธํ•˜์—ฌ booleanํ˜•์œผ๋กœ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜ islower() ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ๋ชจ๋‘ ์†Œ๋ฌธ์ž์ธ์ง€ ํ™•์ธํ•˜์—ฌ booleanํ˜•์œผ๋กœ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜ swapcase() ๋Œ€๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž๋กœ, ์†Œ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ ๐Ÿ’ก์˜ˆ์ œ ์ฝ”๋“œ str1 = "StudyIng PyThoN" str2 = "it is all lower" print('case1', str1.upper()) print('case2', str1.lower()) p..