[ ๐—•๐—ข๐— ] โš ๏ธ JavaScript๋กœ ๋ฐฑ์ค€ ๋ฌธ์ œ ํ’€์ด

NewHaยท2025๋…„ 5์›” 2์ผ
0
post-thumbnail

ํ”„๋ก ํŠธ์—”๋“œ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์‹œ์ž‘ํ•˜๋‹ค๋ณด๋‹ˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ’€์ด ์–ธ์–ด๋กœ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โ€œํ”„๋กœ๊ทธ๋ž˜๋จธ์Šคโ€์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ฒƒ์—๋Š” ์–ด๋ ค์›€์ด ์—†์Šต๋‹ˆ๋‹ค. UI๊ฐ€ ๊น”๋”ํ•˜๊ณ  ์–ธ์–ด ์„ ํƒ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์˜ต์…˜์œผ๋กœ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚œ์ด๋„์— ๋”ฐ๋ผ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๊ณ , ์นด์นด์˜ค์™€ ๊ฐ™์€ ๊ธฐ์—… ์ฝ”ํ…Œ ๋ฌธ์ œ๋ฅผ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค.

โ€œ๋ฐฑ์ค€ ์ฝ”๋”ฉํ…Œ์ŠคํŠธโ€๋Š” ๋‹ค์–‘ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ(์œ ํ˜•๋ณ„, ๋‚œ์ด๋„๋ณ„ ๋“ฑ)๋ณ„๋กœ ๋ฌธ์ œ๋ฅผ ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฑ์ค€์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ ค๊ณ  ํ•˜๋ฉด ์ฒ˜์Œ์— ๋‹นํ™ฉ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์–ธ์–ด ์„ ํƒ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์—†๊ณ , node.js ๋กœ ํ’€์–ด์•ผ ํ•˜๋Š” ๊ฑธ ๋ˆˆ์น˜๊ป(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ node ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์–ธ์–ด์ด๋ฏ€๋กœ ๋ˆˆ์น˜๊ป ์•Œ ์ˆ˜ ์žˆ์ฃ !) ์„ ํƒํ•˜๋”๋ผ๋„, ํ’€์ด๋งŒ์œผ๋กœ๋Š” ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๋งŒ ๋‚ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ์„ ์ง์ ‘ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ž…๋ ฅ๊ฐ’์„ ์ฒ˜๋ฆฌํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  console.log๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ๊ฐ’ ๋‹ค๋ฃจ๊ธฐ

๋ฐฑ์ค€์—์„œ๋Š” /dev/stdin ์ด๋ผ๋Š” ๊ณณ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž…๋ ฅ ๊ฐ’๋“ค์ด ์žˆ๊ณ , ๊ทธ๊ฒƒ์„ ์ฝ์–ด์„œ ์ œ์ถœํ•œ ์ฝ”๋“œ์— ๋Œ€์ž…ํ•ด์„œ ๊ฒ€์‚ฌํ•˜๋Š” ์‹์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ž…๋ ฅ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ์„ ์ฝ์–ด์™€ ์ž…๋ ฅ๊ฐ’์„ ์ •์ œํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

readline๊ณผ fs ๋‘ ๊ฐ€์ง€ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์šฐ์„  fs ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

fs ๋ชจ๋“ˆ

โš ๏ธ

fs ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ, ํŠน์ • ๋ฌธ์ œ์—์„œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฐจํ›„ ํ•ด๋‹น ๋ฌธ์ œ ๋ฐœ์ƒ์‹œ readline ๋ชจ๋“ˆ๋กœ ์ฝ์–ด์˜ค๋Š” ๋ฒ•์„ ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. readline๋ณด๋‹ค ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.

file system modul๋กœ ํŒŒ์ผ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์ƒ์„ฑ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

// require(import)ํ•ด ์˜ต๋‹ˆ๋‹ค.
const fs = require('fs');

๊ฐ€์ ธ์˜จ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด์„œ ํŒŒ์ผ์„ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.

const inputValue = fs.readFileSync('/dev/stdin')

์ฝ์–ด์˜จ ํŒŒ์ผ์„ ์ž…๋ ฅ ๊ฐ’์— ๋งž๊ฒŒ ์ •์ œํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// ์ž…๋ ฅ๊ฐ’์ด ํ•œ ๊ฐœ์˜ ๋ฌธ์ž์ผ ๋•Œ('a')
const inputWord = fs.readFileSync('/dev/stdin').toString().trim();

// ์ž…๋ ฅ๊ฐ’์ด ํ•œ ์ค„์˜ ๋ฌธ์ž์ผ ๋•Œ('a b c')
const inputWords = fs.readFileSync('/dev/stdin').toString().trim().split(' ');

// ์ž…๋ ฅ๊ฐ’์ด ์—ฌ๋Ÿฌ ์ค„์˜ ๋ฌธ์ž์ผ ๋•Œ('a /n b')
const inputWords = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

// ์ž…๋ ฅ๊ฐ’์ด ํ•œ ๊ฐœ์˜ ์ˆซ์ž์ผ ๋•Œ(2)
const input = fs.readFileSync('/dev/stdin').toString().trim(); // '2'
const num = Number(input) // 2

// ์ž…๋ ฅ๊ฐ’์ด ์—ฌ๋Ÿฌ ์ˆซ์ž์ผ ๋•Œ(2 3 4)
const input = fs.readFileSync('/dev/stdin').toString().trim().split(); // ['2', '3', '4']]
const numArr = input.map(n => Number(n)) // [2, 3, 4]

// ์ˆซ์ž(2)+ ํ•œ ์ค„์˜ ๋ฌธ์ž(a b c)๋ฅผ ์ž…๋ ฅ๋ฐ›์•˜์„ ๋•Œ
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); // ['2', 'a b c']
const n = Number(input[0]); // 2
const arr = input[1].split(' '); // [a, b, c]

์ด๋Ÿฐ ์‹์œผ๋กœ ์ž…๋ ฅ ๊ฐ’์— ๋”ฐ๋ผ ์ •์ œํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

profile
๋ฐฑ ๋ฒˆ์„ ๋ณด๋ฉด ํ•œ ๊ฐ€์ง€๋Š” ์•ˆ๋‹ค ๐Ÿ‘€

0๊ฐœ์˜ ๋Œ“๊ธ€