๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๋ฐฑ์ค€][Node.js] 2908๋ฒˆ : ์ƒ์ˆ˜ Algorithm - ์ƒ์ˆ˜ - ๋ฌธ์ œ ์ƒ๊ทผ์ด์˜ ๋™์ƒ ์ƒ์ˆ˜๋Š” ์ˆ˜ํ•™์„ ์ •๋ง ๋ชปํ•œ๋‹ค. ์ƒ์ˆ˜๋Š” ์ˆซ์ž๋ฅผ ์ฝ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ˆ˜ํ•™์„ ๋ชปํ•˜๋Š” ์ƒ์ˆ˜๋ฅผ ์œ„ํ•ด์„œ ์ƒ๊ทผ์ด๋Š” ์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‚ด์ฃผ์—ˆ๋‹ค. ์ƒ๊ทผ์ด๋Š” ์„ธ ์ž๋ฆฌ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ์น ํŒ์— ์จ์ฃผ์—ˆ๋‹ค. ๊ทธ ๋‹ค์Œ์— ํฌ๊ธฐ๊ฐ€ ํฐ ์ˆ˜๋ฅผ ๋งํ•ด๋ณด๋ผ๊ณ  ํ–ˆ๋‹ค. ์ƒ์ˆ˜๋Š” ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ฑฐ๊พธ๋กœ ์ฝ๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 734์™€ 893์„ ์น ํŒ์— ์ ์—ˆ๋‹ค๋ฉด, ์ƒ์ˆ˜๋Š” ์ด ์ˆ˜๋ฅผ 437๊ณผ 398๋กœ ์ฝ๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, ์ƒ์ˆ˜๋Š” ๋‘ ์ˆ˜์ค‘ ํฐ ์ˆ˜์ธ 437์„ ํฐ ์ˆ˜๋ผ๊ณ  ๋งํ•  ๊ฒƒ์ด๋‹ค. ๋‘ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ƒ์ˆ˜์˜ ๋Œ€๋‹ต์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ ๋ฌธ์ œ ํ’€๊ธฐ let fs = require("fs"); let input = fs.readFileSync("/dev/stdin").t.. 2021. 10. 7.
[๋ฐฑ์ค€][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.