coding test

์ •ํ•ด์ง„ ์‹œ๊ฐ„ ๋‚ด์— ์ ์ ˆํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ์ฒ™๋„

  • ๊ณต๊ฐ„์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ”ํžˆ ์‚ฌ์šฉ๋œ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ 10์–ต์„ ๋„˜์–ด๊ฐ€๋ฉด 1์ดˆ ์ด์ƒ์˜ ์‹œ๊ฐ„ ์ง€์—ฐ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋ณธ๋‹ค.

  • ํ˜„์‹ค ์„ธ๊ณ„์—์„œ ๋™์ž‘ ์‹œ๊ฐ„์ด 1์ดˆ ์ด๋‚ด์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๊ณ„ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„(Time Complexity)

ํŠน์ • ์ž…๋ ฅ๊ฐ’์— ๋”ฐ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ํ‰๊ฐ€

์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ ์‹คํ–‰ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ธก์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ์—ฐ์‚ฐ์˜ ์‹คํ–‰ ํšŸ์ˆ˜๋กœ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ํ‰๊ฐ€ํ•œ๋‹ค.

๊ธฐ๋ณธ ์—ฐ์‚ฐ์ด๋ž€?

  • ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ

  • ์ œ์–ด ์—ฐ์‚ฐ

  • ์‚ฐ์ˆ ์—ฐ์‚ฐ

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ํ‰๊ท ์ ์ธ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์•…์˜ ๊ฒฝ์šฐ๋กœ ์„ฑ๋Šฅ์„ ํŒŒ์•…ํ•œ๋‹ค.

๊ณต๊ฐ„ ๋ณต์žก๋„(Spade Complexity)

ํŠน์ • ์ž…๋ ฅ๊ฐ’์— ๋”ฐ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ฐจ์ง€ํ•˜๋Š”์ง€๋ฅผ ํ‰๊ฐ€

์ž…๋ ฅ ๊ณต๊ฐ„ + ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.

๊ณต๊ฐ„ ๋ณต์žก๋„ ๊ทœ์น™

  • string์„ ์ œ์™ธํ•œ ์›์‹œ๊ฐ’์€ O(1)

  • string, ์ฐธ์กฐ๊ฐ’(array, object)๋Š” O(n)

    • ๋ฌธ์ž์—ด ๊ธธ์ด๊ฐ€ 50์ด๋ผ๋ฉด ๊ธธ์ด๊ฐ€ 1์ธ ๋ฌธ์ž์—ด ๋ณด๋‹ค 50๋ฐฐ ๋งŽ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•œ๋‹ค

Big O ํ‘œ๊ธฐ๋ฒ•

์—ฌ๋Ÿฌ ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜์—ฌ ์ˆ˜์น˜๋กœ ๋‚˜ํƒ€๋‚ธ ๋ฐฉ๋ฒ•

์ž…๋ ฅ๊ฐ’์ด ์ปค์งˆ์ˆ˜๋ก ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„(์‹œ๊ฐ„ ๋ณต์žก๋„)์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•œ๋‹ค.

Big O ๊ณต์‹

  • ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ํ•ญ(์ฐจ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ํฐ ํ•ญ)๋งŒ์„ ๊ณ ๋ ค

  • ์ฐจ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ํฐ ํ•ญ์—์„œ ๊ณ„์ˆ˜๋ฅผ ์ œ์™ธํ•˜์—ฌ ํ‘œ๊ธฐ

  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ‘œํ˜„์‹์€ ๋‹จ์ˆœํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด์ง„๋‹ค.

Big O ํ•„์š”์„ฑ

  • ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค.

  • ์—ฌ๋Ÿฌ ์ ‘๊ทผ๋ฒ•์˜ ์žฅ๋‹จ์ ์„ ์• ๊ธฐํ•  ๋•Œ ํ•„์š”

  • ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ , ๋” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋„์›€์ด ๋œ๋‹ค.

Node.js๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ’€๊ธฐ

๋ฐฑ์ค€์€ js์˜ ๋ฌธ์ œ๊ฐ€ node.js์˜ ์ž…์ถœ๋ ฅ ํ˜•ํƒœ๋กœ ๋ฌธ์ œ๊ฐ€ ์ œ๊ณต๋˜๋‹ˆ ์ฐธ๊ณ ํ•˜์ž.

fs ๋ชจ๋“ˆ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ text ํŒŒ์ผ๋กœ ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ชจ๋“ˆ์„ ํ™œ์šฉ

์ „์ฒด ํ…์ŠคํŠธ๋ฅผ ์ฝ์–ด์˜จ๋’ค ๊ฐœํ–‰์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ๋ฐฐ์—ดํ˜•ํƒœ๋กœ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„์˜จ๋‹ค.

let fs = require('fs');
let input = fs.readFileSync('ํŒŒ์ผ๊ฒฝ๋กœ').toString().split('\n');

console.log(input);

readline ๋ชจ๋“ˆ

ํ•œ ์ค„ ์”ฉ ์ž…๋ ฅ์„ ๋ฐ›์•„์„œ, ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ readline ๋ชจ๋“ˆ ํ™œ์šฉ

const rl = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});

let input = [];
rl.on('line', function(line) {
  // ์ฝ˜์†” ์ž…๋ ฅ ์ฐฝ์—์„œ Enter ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ
  input.push(line); 
}).on('close', function() {
  // ์ฝ˜์†” ์ž…๋ ฅ์ด ์ข…๋ฃŒ๋˜๋ฉด ํ˜ธ์ถœ
   console.log(input);
   porcess.exit();
});

Last updated