-
[๋ฐฑ์ค] 14725๋ฒ: ๊ฐ๋ฏธ๊ตด (Node.js)๐ ์๊ณ ๋ฆฌ์ฆ/๋ฐฑ์ค 2025. 4. 17. 13:28
์ ๊ทผ๋ฐฉ์
๋ฌธ์ ๋ฅผ ์ดํด๋ณด๋ฉด ์ฐ์ ๊ฐ ๊ฒฝ๋ก๊ฐ ํธ๋ผ์ด ์๋ฃ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
ํธ๋ผ์ด ์๋ฃ๊ตฌ์กฐ๋?
๊ฒ์์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๋ก ์ค๊ณ๋ ํธ๋ฆฌ ๊ธฐ๋ฐ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ, ์ฃผ๋ก ๋จ์ด ๋ชฉ๋ก์์ ๋จ์ด๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์๋ ์์ฑ ๊ธฐ๋ฅ, ์ฌ์ ๊ฒ์, ๋ฌธ์์ด ํจํด ๋งค์นญ ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ์ ์ ๋ฌธ์์ด์ ํธ๋ฆฌ ํํ๋ก ์ ์ฅํ๊ณ , ๊ณตํต ์ ๋์ฌ๋ฅผ ๊ณต์ ํ์ฌ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ต์ํํ๋ ๊ฒ์ ๋๋ค.๊ฐ๋จํ ์ค๋ช ์ผ๋ก ์์ํ์ฌ ๋ค์ ์งํํด๋ณด์๋ฉด, ์ด ๋ฌธ์ ์์ ์๊ตฌํ๋ ์ฃผ์ ์์ ์ ์ ๋ ฅ๋ ๊ฒฝ๋ก๋ฅผ ํธ๋ผ์ด์ ์ฝ์ ํ๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด
2 KIWI BANANA ๋ KIWI -> BANANA์ ๊ฒฝ๋ก๋ฅผ ๋ง๋๋ ๊ฒ์ผ๋ก KIWI ์๋์ BANANA๊ฐ ์๋ ๊ฒ์ด์ง์.
๊ฒฐ๊ตญ ํธ๋ผ์ด๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ์ฌ ์์ชฝ depth ๊น์ง --๋ฅผ ์ถ๋ ฅํ์ฌ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๋ง๋ค๋ฉด ๋๊ฒ ์ต๋๋ค.
ํ์ด โฐ
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; rl.on("line", function (line) { input.push(line.trim()); }).on("close", function () { // ์ฒซ์งธ์ค: ๊ฒฝ๋ก์ ์ const num = parseInt(input[0]); // ํธ๋ผ์ด ์๋ฃ๊ตฌ์กฐ์ ๋ฃจํธ ๋ ธ๋ (๋น ๊ฐ์ฒด) const trie = {}; for (let i = 1; i <= num; i++) { // ์ฒซ์งธ์ค์ ์ ์ธํ ๋๋จธ์ง ๊ฐ ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ const [, ...route] = input[i].split(" "); // ํธ๋ผ์ด์ ๊ฒฝ๋ก ์ฝ์ insert(trie, route); } submit(trie, 0); }); function insert(trie, route) { // ๋ฃจํธ ๊ฐ์ฒด ์์ฑ // obj๊ฐ trie์ ๋ฃจํธ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ(๊ฐ๋ฆฌํค๊ณ )ํ๊ณ ์์ let obj = trie; for (let i of route) { // ๋น ๊ฐ์ฒด ์์ ์ผ์น๋๋ ๊ฐ์ด ์์ผ๋ฉด / ์ต์ด ์คํ ์ obj = {} // obj์ ์๋ฅผ ๋ค์ด "KIWI"์ ๊ฐ์ ๋ฌธ์์ด์ ํค๊ฐ์ผ๋ก ๊ฐ์ง๋ ๋น๊ฐ์ฒด ์์ฑ if (!obj[i]) { obj[i] = {}; } // obj๋ฅผ obj[i]๊ฐ ๊ฐ๋ฆฌํค๋ {}๊ฐ์ ๋ฐ๋ผ๋ณด๊ฒํจ // ์๋ฅผ ๋ค์ด [ 'KIWI', 'BANANA' ]๋ก ์ต์ด ์คํ ์ ํ์ฌ obj๋ { KIWI: { } } ์ KIWI์ชฝ์ ๋ฐ๋ผ๋ณด๊ณ ์๊ธฐ์ ๋น๊ฐ์ฒด๋ก ๋ณด์ // ๋๋ฒ์งธ ์คํ์ { KIWI: { BANANA: { } } } ์ BANANA์ชฝ์ ๋ฐ๋ผ๋ณด๊ณ ์๊ธฐ์ ๋น๊ฐ์ฒด๋ก ๋ณด์ obj = obj[i]; } } function submit(trie, depth) { // ๊ฐ ํค๊ฐ๋ค์ ์ํ๋ฒณ์์ผ๋ก sort let arr = Object.keys(trie).sort(); // 0๋ฒ์งธ๋ repeat์คํ x arr.forEach((item) => { console.log(`${"--".repeat(depth)}${item}`); // ์ฌ๊ทํจ์๋ฅผ ํตํด ํธ๋ผ์ด๊ตฌ์กฐ์ ๋ง์ง๋งdepth๊น์ง ์ฌ๊ทํธ์ถ submit(trie[item], depth + 1); }); }
๋ฐฑ์ค 14725๋ฒ ๋งํฌ
'๐ ์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ