Notice
Recent Posts
Recent Comments
Link
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lennon FE

๋ฐฑ์ค€ nodejs ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ• / ๋ฐฑ์ค€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž…๋ ฅ ๋ณธ๋ฌธ

๐Ÿ”ฅ Algorithm/Baekjoon

๋ฐฑ์ค€ nodejs ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ• / ๋ฐฑ์ค€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž…๋ ฅ

Lennon 2022. 1. 20. 17:50
728x90
๋ฐ˜์‘ํ˜•

์ดˆ๊ธฐ์— ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด ๋ถˆํŽธํ•œ ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค.

๋ฐ”๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฝƒ์ด๋ผ๋Š” ๋ฐฑ์ค€์—์„œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค...๐Ÿฅฒ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์ฒ˜๋Ÿผ ํ•จ์ˆ˜์— return ํ•ด์ฃผ๋Š” ๊ฒŒ ์•„๋‹Œ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ console ์ถœ๋ ฅ์„ ํ•ด์•ผ ํ•˜๋Š” ๋ฐฑ์ค€์—์„œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ฑด ๋ฒˆ๊ฑฐ๋กญ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฐฑ์ค€์—์„œ ๋ฌธ์ œํ‘ธ๋Š” ๊ฒƒ์€ ์ •๋ง ๊ฐ„๋‹จํ•˜๋ฉฐ, ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ ๋ชจ๋‘ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค.

 

๋จผ์ € ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์œ„ํ•ด ํด๋”๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ  vscode์—์„œ ์—ด์–ด๋ณด์ž. 

์•„๋ž˜ ์‚ฌ์ง„์€ ๋ณธ์ธ์˜ ํด๋” ๊ตฌ์กฐ์ด๋‹ค.

baekjoon ํ’€์ด์™€, programmers ํ’€์ด๋Š” ๋‚˜๋ˆ ์žˆ์ง€๋งŒ, ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ๋Š” baekjoon ํด๋”๋งŒ ํ™•์ธํ•ด๋ณด๋„๋ก ํ•˜์ž.

๋‹ค์–‘ํ•œ ๋‚ด๋ถ€ ํด๋” ๊ฐ€์šด๋ฐ, baekjoonํด๋”์˜ ์ „์—ญ ์œ„์น˜ ์ œ์ผ ํ•˜๋‹จ์— input.txt ํŒŒ์ผ์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค.

 

ํ•ด๋‹น ํŒŒ์ผ์—๋Š” ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋ฐฑ์ค€์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ ๋„ฃ๋Š” txt ํŒŒ์ผ์ด๋‹ค.

๋ณธ์ธ์€ ํ•ด๋‹น. txt ํŒŒ์ผ์„ fs๋กœ ๋ถˆ๋Ÿฌ์™€์„œ vscode์—์„œ ์ฝ”๋“œ๋ฅผ ๋Œ๋ ค๋ณด๊ณ  ๋ฐฑ์ค€์—์„œ ์ œ์ถœํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋‹ค.

 

 

fs(File System)์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์ด๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋Š” ์•„๋ž˜์— ๋‚˜์˜จ ์ฝ”๋“œ๋“ค์„ ๊ฐ„๋‹จํžˆ ์ˆ˜์ •ํ•˜์—ฌ ๋ฐ”๋กœ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. 

๋ณธ์ธ์€ input.txt ํŒŒ์ผ์ด ํด๋” ์™ธ๋ถ€์— ์žˆ์œผ๋ฏ€๋กœ ../input.txt ๋กœ txt ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™”๋‹ค,

const fs = require('fs');
let input = fs.readFileSync('../input.txt').toString().trim().split('\n');

const fs = require('fs')

fs๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€ fs ๋ณ€์ˆ˜์— ๋„ฃ์„ ๊ฒƒ์ด๋‹ค.

fs.readFileSync

๊ฐ„๋‹จํžˆ ๋งํ•ด ์–ด๋–ค ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฑด์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ด๊ณ , ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

toString()

ํ•„์š” ์—†์–ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐฑ์ค€์— ์ฝ”๋“œ๋ฅผ ์ œ์ถœํ• ๋•Œ๋Š” ../input.txt ๊ฒฝ๋กœ๋ฅผ dev/stdin์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๊ณ  ํ•ด๋‹น ๋ฐ˜ํ™˜ ๊ฐ’์€ Buffer๊ฐ์ฒด์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

trim()

๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ ์—†์• ์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ผ๋ถ€ ์ž…๋ ฅ๊ฐ’์— ๋งˆ์ง€๋ง‰ ๊ฐœํ–‰์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

split()

๋งŽ์ด ๋ณด์…จ์„ ํ•จ์ˆ˜์ด๋‹ค. ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

์œ„์˜ ์˜ˆ์ œ์ฒ˜๋Ÿผ ๊ฐœํ–‰๋˜์–ด ์ž…๋ ฅ๋˜๋Š” ๊ฐ’์€ .split('\n')์„ ์ด์šฉํ•ด ๋ฐฐ์—ด๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•œ ๋ฒˆ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž.

const fs = require('fs');
let input = fs.readFileSync('../input.txt').toString().trim().split('\n');

input.txt๊ฐ’์ด ์œ„์ฒ˜๋Ÿผ ๊ฐœํ–‰๋˜์–ด ์ž…๋ ฅ๋˜์—ˆ๊ณ , ์œ„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด input๊ฐ’์€ ['4', '3', '0', '4', '0'] ์œผ๋กœ ๋ฐ›์•„์งˆ ๊ฒƒ์ด๋ฉฐ,

์ด๋•Œ๋ถ€ํ„ฐ input์„ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ•จ์ˆ˜์˜ ์ธ์ž์ฒ˜๋Ÿผ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  console์„ ์ถœ๋ ฅํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค.

 

๋งŒ์•ฝ ์ € ๋ฌธ์ž์—ด ๊ฐ’์„ ์ˆซ์ž๋กœ ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–กํ•ด์•ผ ํ• ๊นŒ?

const fs = require('fs');
let input = fs
.readFileSync('../input.txt')
.toString()
.trim()
.split('\n')
.map(v => +v);

map์„ ์ด์šฉํ•ด ๋ฌธ์ž์—ด ๋ณ€์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

input๊ฐ’์€ [4, 3, 0, 4, 0] ์œผ๋กœ ๋ฐ›์•„์งˆ ๊ฒƒ์ด๋‹ค.

 

 

 

๋งŒ์•ฝ ์ž…๋ ฅ๊ฐ’์ด ์•„๋ž˜์ฒ˜๋Ÿผ ์ฃผ์–ด์ง€๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? 

const fs = require('fs');
let input = fs.readFileSync('../input.txt').toString().trim().split('\n');

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด input์ด [ '4', '3 5 2 7']๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ์ด ๋  ๊ฒƒ์ด๋‹ค.

์ €๊ธฐ์„œ ํ•„์š” ์—†๋Š” ๊ฐ’์€ ์ผ๋‹จ '4'์ด๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด๋ผ๋ฉด ์‹คํ–‰ํ•  ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ ค๊ณ  ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

const fs = require('fs');
let input = fs.readFileSync('../input.txt').toString().trim().split('\n');
input.shift();

input = input[0].split(' '); // ๋‚จ์€ ๋ฐฐ์—ด์„ split

 shift๋ฅผ ์ด์šฉํ•ด '4' ๊ฐ’์„ ์—†์• ๊ณ , ๋„์–ด์“ฐ๊ธฐ ํ•˜๋‚˜์— ๋Œ€ํ•ด split์„ ์ด์šฉํ•˜๋ฉด ['3', '5', '2', '7'] ๋กœ ๊ตฌ์„ฑ๋  ๊ฒƒ์ด๋‹ค.

 

์ฆ‰ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ’๋“ค์€ ์œ ๋™์ ์œผ๋กœ ์—„์ฒญ ์‰ฝ๊ฒŒ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ps) ๋งŒ์•ฝ ์ข…๋ฃŒ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ฑฐ๋ผ๋ฉด pop()์„ ์ด์šฉํ•ด ์—†์• ์ฃผ์ž.

 

ํ•ด๋‹น input์„ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์„ ๋•Œ, vscode์—์„œ ์ œ๋Œ€๋กœ ๋๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ณ  ์‹ถ์„ ๊ฒƒ์ด๋‹ค.

 

์ด์   ํ„ฐ๋ฏธ๋„๋กœ ๋“ค์–ด๊ฐ€ ๋ณด์ž. 

๋งŒ์•ฝ ๋ณธ์ธ์ฒ˜๋Ÿผ baekjoon์ด๋ผ๋Š” ํด๋”์˜ ๋‚ด๋ถ€ ํด๋”์ธ ์Šคํƒ์—์„œ 9012.js์— ๋Œ€ํ•œ ์ถœ๋ ฅ ๊ฐ’์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

cd baekjoon/์Šคํƒ
node 9012.js

input๊ฐ’์ด ์ œ๋Œ€๋กœ ์„ค์ •๋๋Š”์ง€ ๋“ฑ 9012.js์—์„œ ์ถœ๋ ฅ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ„ฐ๋ฏธ๋„์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ •๋‹ต ๊ฐ™์œผ๋ฉด ๋ฐฑ์ค€์— ์ œ์ถœํ•˜๋ฉด ๋œ๋‹ค!

 

๋ฐฑ์ค€์— ์ œ์ถœํ•˜๊ธฐ 

์ •๋‹ต์„ ์ œ์ถœํ•˜๊ธฐ ์œ„ํ•ด ๋ณธ์ธ์˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.

 

fs.readFileSync('../input.txt') ์˜ ๊ฒฝ๋กœ๋ฅผ fs.readFileSync('dev/stdin') ์œผ๋กœ ์ˆ˜์ •ํ•œ ํ›„ ์ œ์ถœํ•˜๋ฉด ๋์ด๋‹ค. 

const fs = require('fs');
//let input = fs.readFileSync('../input.txt').toString().trim().split('\n');
let input = fs.readFileSync('dev/stdin').toString().trim().split('\n');

 

์—ฌ๊ธฐ๊นŒ์ง€ํ•˜๊ณ  1-2 ๋ฌธ์ œ ํ’€๋‹ค๋ณด๋ฉด ๊ฐ์ด ์˜ฌ๊ฒƒ์ด๋‹ค.

ํ’€๋‹ค๋ณด๋ฉด ์ •๋ง ์ฒ˜๋ฆฌํ•˜๊ธฐ๋„ ๊ท€์ฐฎ์€ input๊ฐ’์ด ์ž์ฃผ ๋‚˜์˜ฌ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ ํ’€์ด ์ค„๊ฐœ์ˆ˜๋ณด๋‹ค input์ฒ˜๋ฆฌ ์ค„ ๊ฐœ์ˆ˜๊ฐ€ ๋” ๋งŽ์•„์ง€๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

๋‚˜๋จธ์ง€ input๊ฐ’์— ๋Œ€ํ•œ ์กฐ์ •์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๋ชซ์ด์ž ์—ญ๋Ÿ‰์ด๋ผ ์ƒ๊ฐํ•˜๋ฉฐ ์ฒœ์ฒœํžˆ ์‹œ๋„ํ•ด๋ณด์ž.

728x90
๋ฐ˜์‘ํ˜•
Comments