[๋ฐฑ์ค][Node.js] 2902๋ฒ : KMP๋ ์ KMP์ผ๊น?
Algorithm
- KMP๋ ์ KMP์ผ๊น? -
๋ฌธ์
KMP ์๊ณ ๋ฆฌ์ฆ์ด KMP์ธ ์ด์ ๋ ์ด๋ฅผ ๋ง๋ ์ฌ๋์ ์ฑ์ด Knuth, Morris, Prett์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ๊ฒ ์๊ณ ๋ฆฌ์ฆ์๋ ๋ฐ๊ฒฌํ ์ฌ๋์ ์ฑ์ ๋ฐ์ ์ด๋ฆ์ ๋ถ์ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๋ ๋ค๋ฅธ ์๋ก, ์ ๋ช ํ ๋น๋์นญ ์ํธํ ์๊ณ ๋ฆฌ์ฆ RSA๋ ์ด๋ฅผ ๋ง๋ ์ฌ๋์ ์ด๋ฆ์ด Rivest, Shamir, Adleman์ด๋ค.
์ฌ๋๋ค์ ์ด๋ ๊ฒ ์ฌ๋ ์ฑ์ด ๋ค์ด๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ ๊ฐ์ง ํํ๋ก ๋ถ๋ฅธ๋ค.
- ์ฒซ ๋ฒ์งธ๋ ์ฑ์ ๋ชจ๋ ์ฐ๊ณ , ์ด๋ฅผ ํ์ดํ(-)์ผ๋ก ์ด์ด ๋ถ์ธ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค๋ฉด, Knuth-Morris-Pratt์ด๋ค. ์ด๊ฒ์ ๊ธด ํํ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๋ ๋ฒ์งธ๋ก ์งง์ ํํ๋ ๋ง๋ ์ฌ๋์ ์ฑ์ ์ฒซ ๊ธ์๋ง ๋ฐ์ ๋ถ๋ฅด๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค๋ฉด, KMP์ด๋ค.
๋ํ์ด๋ ๋งค์ผ๋งค์ผ ์์ ์ด ํ ์ผ์ ๋ชจ๋ ๋ฉ๋ชจ์ฅ์ ์ ์ด๋๋๋ค. ์ ์ ์๊ธฐ ์ ์, ์ค๋ ํ๋ฃจ ๋ฌด์์ ํ๋์ง ๋์๊ฒจ ๋ณด๋ ๊ฒ์ผ๋ก ํ๋ฃจ๋ฅผ ๋ง๊ฐํ๋ค.
ํ๋ฃจ๋ ์ด ๋ฉ๋ชจ๋ฅผ ๋ณด๋ ์ค, ์ง๊ธ๊น์ง ๊ธด ํํ์ ์งง์ ํํ๋ฅผ ์์ด์ ์ ์ด ๋์ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค.
์ด๋ ๊ฒ ๊ธด ํํ๋ก ํ๋ฃจ ์ผ์ ๊ธฐ๋กํ๋ค๊ฐ๋ ๋ฉ๋ชจ์ฅ ๊ฐ๊ฒฉ์ด ๋ถ๋ด๋์ด ํ์ฐ๋ ๊ฒ์ด ๋ปํ๊ธฐ ๋๋ฌธ์, ์์ผ๋ก๋ ์งง์ ํํ๋ก ๊ธฐ๋กํ๋ ค๊ณ ํ๋ค.
๊ธด ํํ์ ์๊ณ ๋ฆฌ์ฆ ์ด๋ฆ์ด ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์งง์ ํํ๋ก ๋ฐ๊พธ์ด ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ์ถ๋ ฅ ์์
๋ฌธ์ ํ๊ธฐ
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("-");
let result = input.map((el) => el[0]).join("");
console.log(result);