๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๋ฐฑ์ค€][Node.js] 2902๋ฒˆ : KMP๋Š” ์™œ KMP์ผ๊นŒ? Algorithm - KMP๋Š” ์™œ KMP์ผ๊นŒ? - ๋ฌธ์ œ KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด KMP์ธ ์ด์œ ๋Š” ์ด๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ์˜ ์„ฑ์ด Knuth, Morris, Prett์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” ๋ฐœ๊ฒฌํ•œ ์‚ฌ๋žŒ์˜ ์„ฑ์„ ๋”ฐ์„œ ์ด๋ฆ„์„ ๋ถ™์ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋˜ ๋‹ค๋ฅธ ์˜ˆ๋กœ, ์œ ๋ช…ํ•œ ๋น„๋Œ€์นญ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ RSA๋Š” ์ด๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์ด Rivest, Shamir, Adleman์ด๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด๋ ‡๊ฒŒ ์‚ฌ๋žŒ ์„ฑ์ด ๋“ค์–ด๊ฐ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‘ ๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ๋ถ€๋ฅธ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์„ฑ์„ ๋ชจ๋‘ ์“ฐ๊ณ , ์ด๋ฅผ ํ•˜์ดํ”ˆ(-)์œผ๋กœ ์ด์–ด ๋ถ™์ธ ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, Knuth-Morris-Pratt์ด๋‹ค. ์ด๊ฒƒ์„ ๊ธด ํ˜•ํƒœ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ ์งง์€ ํ˜•ํƒœ๋Š” ๋งŒ๋“  ์‚ฌ๋žŒ์˜ ์„ฑ์˜ ์ฒซ ๊ธ€์ž๋งŒ ๋”ฐ์„œ ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, KMP์ด๋‹ค. ๋™ํ˜์ด๋Š” ๋งค์ผ๋งค์ผ ์ž์‹ ์ด ํ•œ.. 2021. 10. 6.
[๋ฐฑ์ค€][Node.js] 2884๋ฒˆ : ์•Œ๋žŒ ์‹œ๊ณ„ Algorithm - ์•Œ๋žŒ ์‹œ๊ณ„ - ๋ฌธ์ œ ์ƒ๊ทผ์ด๋Š” ๋งค์ผ ์•„์นจ ์•Œ๋žŒ์„ ๋“ฃ๊ณ  ์ผ์–ด๋‚œ๋‹ค. ์•Œ๋žŒ์„ ๋“ฃ๊ณ  ๋ฐ”๋กœ ์ผ์–ด๋‚˜๋ฉด ๋‹คํ–‰์ด๊ฒ ์ง€๋งŒ, ํ•ญ์ƒ ์กฐ๊ธˆ๋งŒ ๋” ์ž๋ ค๋Š” ๋งˆ์Œ ๋•Œ๋ฌธ์— ๋งค์ผ ํ•™๊ต๋ฅผ ์ง€๊ฐํ•˜๊ณ  ์žˆ๋‹ค. ์ƒ๊ทผ์ด๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ๋™์›ํ•ด๋ณด์•˜์ง€๋งŒ, ์กฐ๊ธˆ๋งŒ ๋” ์ž๋ ค๋Š” ๋งˆ์Œ์€ ๊ทธ ์–ด๋–ค ๊ฒƒ๋„ ์—†์•จ ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ์ด๋Ÿฐ ์ƒ๊ทผ์ด๋ฅผ ๋ถˆ์Œํ•˜๊ฒŒ ๋ณด๋˜, ์ฐฝ์˜์ด๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”์ฒœํ•ด ์ฃผ์—ˆ๋‹ค. ๋ฐ”๋กœ "45๋ถ„ ์ผ์ฐ ์•Œ๋žŒ ์„ค์ •ํ•˜๊ธฐ"์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋‹จ์ˆœํ•˜๋‹ค. ์›๋ž˜ ์„ค์ •๋˜์–ด ์žˆ๋Š” ์•Œ๋žŒ์„ 45๋ถ„ ์•ž์„œ๋Š” ์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค. ์–ด์ฐจํ”ผ ์•Œ๋žŒ ์†Œ๋ฆฌ๋ฅผ ๋“ค์œผ๋ฉด, ์•Œ๋žŒ์„ ๋„๊ณ  ์กฐ๊ธˆ ๋” ์ž˜ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋งค์ผ ์•„์นจ ๋” ์žค๋‹ค๋Š” ๊ธฐ๋ถ„์„ ๋Š๋‚„ ์ˆ˜ ์žˆ๊ณ , ํ•™๊ต๋„ ์ง€๊ฐํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ํ˜„์žฌ ์ƒ๊ทผ์ด๊ฐ€ ์„ค์ •ํ•œ ์•Œ๋žŒ ์‹œ๊ฐ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฐฝ์˜.. 2021. 10. 5.
[๋ฐฑ์ค€][Node.js] 2875๋ฒˆ : ๋Œ€ํšŒ or ์ธํ„ด Algorithm - ๋Œ€ํšŒ or ์ธํ„ด - ๋ฌธ์ œ ๋ฐฑ์ค€๋Œ€ํ•™๊ต์—์„œ๋Š” ๋Œ€ํšŒ์— ๋‚˜๊ฐˆ ๋•Œ 2๋ช…์˜ ์—ฌํ•™์ƒ๊ณผ 1๋ช…์˜ ๋‚จํ•™์ƒ์ด ํŒ€์„ ๊ฒฐ์„ฑํ•ด์„œ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์›์น™์ด๋‹ค. (์™œ์ธ์ง€๋Š” ์ด์žฅ๋‹˜๊ป˜ ์—ฌ์ญˆ์–ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค.) ๋ฐฑ์ค€๋Œ€ํ•™๊ต๋Š” ๋›ฐ์–ด๋‚œ ์ธ์žฌ๋“ค์ด ๋งŽ์•„ ์˜ฌํ•ด์—๋„ N๋ช…์˜ ์—ฌํ•™์ƒ๊ณผ M๋ช…์˜ ๋‚จํ•™์ƒ์ด ํŒ€์›์„ ์ฐพ๊ณ  ์žˆ๋‹ค. ๋Œ€ํšŒ์— ์ฐธ์—ฌํ•˜๋ ค๋Š” ํ•™์ƒ๋“ค ์ค‘ K๋ช…์€ ๋ฐ˜๋“œ์‹œ ์ธํ„ด์‰ฝ ํ”„๋กœ๊ทธ๋žจ์— ์ฐธ์—ฌํ•ด์•ผ ํ•œ๋‹ค. ์ธํ„ด์‰ฝ์— ์ฐธ์—ฌํ•˜๋Š” ํ•™์ƒ์€ ๋Œ€ํšŒ์— ์ฐธ์—ฌํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋ฐฑ์ค€๋Œ€ํ•™๊ต์—์„œ๋Š” ๋›ฐ์–ด๋‚œ ์ธ์žฌ๋“ค์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ๋งŽ์€ ํŒ€์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ตœ์„ ์ด๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์—ฌํ•™์ƒ์˜ ์ˆ˜ N, ๋‚จํ•™์ƒ์˜ ์ˆ˜ M, ์ธํ„ด์‰ฝ์— ์ฐธ์—ฌํ•ด์•ผํ•˜๋Š” ์ธ์› K๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ํŒ€ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ ๋ฌธ์ œ ํ’€๊ธฐ const readline = require("readlin.. 2021. 10. 4.
[๋ฐฑ์ค€][Node.js] 2869๋ฒˆ : ๋‹ฌํŒฝ์ด๋Š” ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ๋‹ค Algorithm - ๋‹ฌํŒฝ์ด๋Š” ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ๋‹ค - ๋ฌธ์ œ ๋•… ์œ„์— ๋‹ฌํŒฝ์ด๊ฐ€ ์žˆ๋‹ค. ์ด ๋‹ฌํŒฝ์ด๋Š” ๋†’์ด๊ฐ€ V๋ฏธํ„ฐ์ธ ๋‚˜๋ฌด ๋ง‰๋Œ€๋ฅผ ์˜ฌ๋ผ๊ฐˆ ๊ฒƒ์ด๋‹ค. ๋‹ฌํŒฝ์ด๋Š” ๋‚ฎ์— A๋ฏธํ„ฐ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฐค์— ์ž ์„ ์ž๋Š” ๋™์•ˆ B๋ฏธํ„ฐ ๋ฏธ๋„๋Ÿฌ์ง„๋‹ค. ๋˜, ์ •์ƒ์— ์˜ฌ๋ผ๊ฐ„ ํ›„์—๋Š” ๋ฏธ๋„๋Ÿฌ์ง€์ง€ ์•Š๋Š”๋‹ค. ๋‹ฌํŒฝ์ด๊ฐ€ ๋‚˜๋ฌด ๋ง‰๋Œ€๋ฅผ ๋ชจ๋‘ ์˜ฌ๋ผ๊ฐ€๋ ค๋ฉด, ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ ๋ฌธ์ œ ํ’€๊ธฐ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input; rl.on("line", function (line) { input = line .to.. 2021. 10. 3.
[๋ฐฑ์ค€][Node.js] 2864๋ฒˆ : 5์™€ 6์˜ ์ฐจ์ด Algorithm - 5์™€ 6์˜ ์ฐจ์ด - ๋ฌธ์ œ ์ƒ๊ทผ์ด๋Š” 2863๋ฒˆ์—์„œ ํ‘œ๋ฅผ ๋„ˆ๋ฌด ์—ด์‹ฌํžˆ ๋Œ๋ฆฐ ๋‚˜๋จธ์ง€ 5์™€ 6์„ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ƒ๊ทผ์ด๊ฐ€ ์ˆซ์ž 5๋ฅผ ๋ณผ ๋•Œ, 5๋กœ ๋ณผ ๋•Œ๋„ ์žˆ์ง€๋งŒ, 6์œผ๋กœ ์ž˜๋ชป ๋ณผ ์ˆ˜๋„ ์žˆ๊ณ , 6์„ ๋ณผ ๋•Œ๋Š”, 6์œผ๋กœ ๋ณผ ๋•Œ๋„ ์žˆ์ง€๋งŒ, 5๋กœ ์ž˜๋ชป ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค. ๋‘ ์ˆ˜ A์™€ B๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ƒ๊ทผ์ด๋Š” ์ด ๋‘ ์ˆ˜๋ฅผ ๋”ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ, ์ƒ๊ทผ์ด๊ฐ€ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ์ˆ˜์˜ ๊ฐ€๋Šฅํ•œ ํ•ฉ ์ค‘, ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ ๋ฌธ์ œ ํ’€๊ธฐ let fs = require("fs"); let input = fs.readFileSync("/dev/stdin").toString().split(" "); let num1 = input[0].split(''); let num2.. 2021. 10. 2.
[๋ฐฑ์ค€][Node.js] 2845๋ฒˆ : ํŒŒํ‹ฐ๊ฐ€ ๋๋‚˜๊ณ  ๋‚œ ๋’ค Algorithm - ํŒŒํ‹ฐ๊ฐ€ ๋๋‚˜๊ณ  ๋‚œ ๋’ค - ๋ฌธ์ œ ํŒŒํ‹ฐ๊ฐ€ ๋๋‚˜๊ณ  ๋‚˜๋ฉด, ์‚ฌ๋žŒ๋“ค์€ ๋ˆ„๊ฐ€ ํŒŒํ‹ฐ์— ์™”๋Š”์ง€์™€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์™”๋Š”์ง€๋ฅผ ๊ถ๊ธˆํ•ดํ•œ๋‹ค. ๋ณดํ†ต ํŒŒํ‹ฐ๋Š” ๋งค์šฐ ํฌ๊ฒŒ ์—ด๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ์ •ํ™•ํ•˜๊ฒŒ ๋ช‡ ๋ช…์ด ์ฐธ๊ฐ€ํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค. ์ง€๋‚œ์ฃผ ํ† ์š”์ผ์— ์ƒ๊ทผ์ด๋Š” ์ž์‹ ์˜ 3ํ•™๋…„ ์ง„ํ•™์„ ๊ธฐ๋…ํ•˜๋ฉด์„œ ๋งค์šฐ ์„ฑ๋Œ€ํ•œ ํŒŒํ‹ฐ๋ฅผ ์—ด์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ƒ๊ทผ์ด๋Š” 1m2๋‹น ๋ช‡ ๋ช…์˜ ์‚ฌ๋žŒ์ด ์žˆ์—ˆ๋Š”์ง€ ์•Œ๊ณ ์žˆ๋‹ค. ์ƒ๊ทผ์ด์˜ ํŒŒํ‹ฐ๋Š” ์ •๋ง ์—„์ฒญ๋‚œ ๊ทœ๋ชจ์˜€๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๋ถ€๋ถ„์˜ ์‹ ๋ฌธ์—๋„ ๊ธฐ์‚ฌ๊ฐ€ ์‹ค๋ ธ๋‹ค. ์ƒ๊ทผ์ด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ 5๊ฐœ์˜ ์‹ ๋ฌธ์„ ๋ณด๋ฉด์„œ ๊ทธ ๊ธฐ์‚ฌ์— ์ ํ˜€์ ธ์žˆ๋Š” ์ฐธ๊ฐ€์ž์˜ ์ˆ˜๋ฅผ ์ ์—ˆ๋‹ค. ์ƒ๊ทผ์ด๋Š” ์ž์‹ ์ด ์•Œ๊ณ ์žˆ๋Š” ์ฐธ๊ฐ€์ž์˜ ์ˆ˜๊ฐ€ ์ •ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ฐ ์‹ ๋ฌธ ๊ธฐ์‚ฌ์— ์‹ค๋ ค์žˆ๋Š” ์ฐธ๊ฐ€์ž์˜ ์ˆ˜๊ฐ€ ๋ช‡ ๋ช… ๋งŒํผ ์ž˜๋ชป๋˜์–ด์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…์ถœ๋ ฅ ์˜ˆ.. 2021. 10. 1.