ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐฑ์ค€์—์„œ JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€๊ฒŒ ๋  ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž…๋ ฅ์— ๊ด€ํ•œ ์Šค์ผˆ๋ ˆํ†ค ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค๋‚˜ LeetCode ํ”Œ๋žซํผ ๋“ฑ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํŒŒ์ผ์„ ์ฝ์–ด์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š” ์‚ฌ์ „ ์„ค์ • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ฐฑ์ค€์—์„œ ๋ฌธ์ œ ์ง€๋ฌธ๋งŒ ๊ฐ€์ ธ์™€ ์™ธ๋ถ€ ์ฝ”๋“œ ์—๋””ํ„ฐ์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง์„ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ solution ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋ฌธ์ œ๋งŒ ํ’€์–ด๋„ ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ ๋ฐฑ์ค€์—์„œ ์กฐ๊ธˆ ๋” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๊ณ  ์‹ถ์€ ์š•์‹ฌ์— nodeJS์˜ ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด์„œ ๋‹ค์Œ ๋ฐฑ์ค€ ๋ฌธ์ œ๋ฅผ ์˜ˆ์‹œ๋กœ ํฌ์ŠคํŒ…ํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

๋ฌธ์ œ

https://www.acmicpc.net/problem/4344

 

4344๋ฒˆ: ํ‰๊ท ์€ ๋„˜๊ฒ ์ง€

๋Œ€ํ•™์ƒ ์ƒˆ๋‚ด๊ธฐ๋“ค์˜ 90%๋Š” ์ž์‹ ์ด ๋ฐ˜์—์„œ ํ‰๊ท ์€ ๋„˜๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๋“ค์—๊ฒŒ ์Šฌํ”ˆ ์ง„์‹ค์„ ์•Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค.

www.acmicpc.net

 

nodeJS ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ

์šฐ์„  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ์„ ๋ถˆ์–ด์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” fs ๋‚ด์žฅ ๋ชจ๋“ˆ์ด ํ•„์š”ํ•˜๋‹ค.

ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋œ ์ž‘์—…์„ ํ•˜๋Š” ๋ชจ๋“ˆ๋กœ, ๋ณดํ†ต FileSystem์„ ์ค„์—ฌ์„œ fs ๋ชจ๋“ˆ์ด๋ผ๊ณ  ์ค„์—ฌ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

 

fs ๋‚ด์žฅ ๋ชจ๋“ˆ์„ ํ˜„์žฌ ํŒŒ์ผ์— ๋ถˆ๋Ÿฌ์˜จ ๋’ค readFileSync ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํŒŒ์ผ ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ ๋ฐ›์•„ input ๋ณ€์ˆ˜์— ์ €์žฅํ•ด์ค€๋‹ค.

// 5
// 5 50 50 70 80 100
// 7 100 95 90 80 70 60 50
// 3 70 90 80
// 9 100 99 98 97 96 95 94 93 91

const fs = require('fs');
let input = fs.readFileSync('./input.txt').toString();

 

input์˜ ๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ˜์†”๋กœ ์ฐ์–ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ง„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

"5 
  5 50 50 70 80 100
  7 100 95 90 80 70 60 50
  3 70 90 80
  9 100 99 98 97 96 95 94 93 91"

 

ํ•˜์ง€๋งŒ ์ด ๊ฐ’์œผ๋ก  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง์— ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์—†์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด split() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค„๋ฐ”๊ฟˆ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„๋œ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์„ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•ด ์ค€๋‹ค.

// 5
// 5 50 50 70 80 100
// 7 100 95 90 80 70 60 50
// 3 70 90 80
// 9 100 99 98 97 96 95 94 93 91

const fs = require('fs');
let input = fs.readFileSync('./input.txt').toString();
input = input.split('\n');
['5', 
  '5 50 50 70 80 100',
  '7 100 95 90 80 70 60 50',
  '3 70 90 80',
  '9 100 99 98 97 96 95 94 93 91']

 

ํ˜„์žฌ ๋ชจ๋“  ์ผ€์ด์Šค ํ…Œ์ด์Šค๋“ค์ด ํ•˜๋‚˜์˜ ๋ฐฐ์—ด ๋‚ด์— ์ ์žฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง์— ํ•˜๋‚˜์”ฉ ์ ์šฉ์‹œ์ผœ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•œ๋ฒˆ ๋” ์ •์ œํ•ด์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

 

์šฐ์„  ์ฒซ๋ฒˆ์งธ ์š”์†Œ input[0]์ธ 5๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆซ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ„๋„๋กœ ๊ฐ’์„ ์ƒ์„ฑํ•ด์ค˜์•ผ ๋œ๋‹ค.

// 5
// 5 50 50 70 80 100
// 7 100 95 90 80 70 60 50
// 3 70 90 80
// 9 100 99 98 97 96 95 94 93 91

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

const testCaseNum = input[0]

 

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์ด ํ˜„์žฌ ์ €์žฅ๋˜์–ด ์žˆ๋Š” input ๋‚ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜จ๋‹ค๋ฉด ์ˆซ์ž๊ฐ’์ด ์•„๋‹Œ ๋ฌธ์ž๊ฐ’์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ด๋ฅผ ์ˆซ์ž๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

// 5
// 5 50 50 70 80 100
// 7 100 95 90 80 70 60 50
// 3 70 90 80
// 9 100 99 98 97 96 95 94 93 91

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

const testCaseNum = +input[0]
//const testCaseNum = Number(input[0])

 

์ˆซ์ž๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ์—๋Š” +๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ  Number() ๋ฐ parseInt()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ ์‹ค์ œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ์“ฐ์ผ ์š”์†Œ๋“ค์„ ๋ฌธ์ œ์— ํ•˜๋‚˜์”ฉ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋„๋ก ๋ฐฐ์—ด๋กœ ๊ฐ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ๋„์–ด์“ฐ๊ธฐ ๊ธฐ์ค€์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋“ค์„ ์ƒ์„ฑํ•ด์ค˜์•ผ ๋œ๋‹ค.

(์ด๋•Œ๋„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆซ์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ ์š”์†Œ๋“ค์„ ๋ชจ๋‘ ์ˆซ์ž๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ๋œ๋‹ค)

// 5
// 5 50 50 70 80 100
// 7 100 95 90 80 70 60 50
// 3 70 90 80
// 9 100 99 98 97 96 95 94 93 91

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

const testCaseNum = +input[0]
//const testCaseNum = Number(input[0])

for(let i = 1; i <= testCaseNum; ++i) {
  const arr = input[i].split(' ').map((item) => +item);
  break;
 }
  ['5', '50', '50', '70', '80', '100'], 
  ['7', '100', '95', '90', '80', '70', '60', '50'], 
  ['3', '70', '90', '80'], 
  ['9', '100', '99', '98', '97', '96', '95', '94', '93', '91']

 

์œ„ map() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆซ์ž๊ฐ’์œผ๋กœ ์š”์†Œ๋ฅผ ์ •์ œํ•˜๋Š” ๊ณผ์ •์€ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ•์•ฝํ•œ ๊ฒƒ์ด๋‹ค.

// 5
// 5 50 50 70 80 100
// 7 100 95 90 80 70 60 50
// 3 70 90 80
// 9 100 99 98 97 96 95 94 93 91

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

const testCaseNum = +input[0]
//const testCaseNum = Number(input[0])

for(let i = 1; i <= testCaseNum; ++i) {
  const arr = input[i].split(' '); //.map(item => +item);
  let newArr = [];
  for(let i = 0; i < arr.length; ++i) {
  	newArr.push(+arr[i]);
  }
  break;
 }

 

์ „์ฒด input ๊ด€๋ฆฌ ์ฝ”๋“œ

// 5
// 5 50 50 70 80 100
// 7 100 95 90 80 70 60 50
// 3 70 90 80
// 9 100 99 98 97 96 95 94 93 91

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

const inputC = +input[0];
const inputTestCase = [];

for(let i = 1; i <= inputC; ++i) {
  const arr = input[i].split(' ').map((item) => +item);
  let newArr = [];
  for(let i = 0; i < arr.length; ++i) {
    newArr.push(arr[i])
  }
  const testCase = {
    N: arr[0],
    arr: newArr
  };
  inputTestCase.push(testCase);
  break;
}

function solution(C, testCase) {
    console.log('C :', C);
    console.log('testCase :', testCase);
}

solution(inputC, inputTestCase);
C: 5
inputTestCase: [
  { N: 5, arr: [50, 50, 70, 80, 100] },
  { N: 7, arr: [100, 95, 90, 80, 70, 60, 50] },
  (...)
]

์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ตœ์ข…์ ์œผ๋กœ console.log()๋ฅผ ํ†ตํ•ด ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค˜์•ผ ๋œ๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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 31
๊ธ€ ๋ณด๊ด€ํ•จ