coding test

μ •ν•΄μ§„ μ‹œκ°„ 내에 μ μ ˆν•œ μ•Œκ³ λ¦¬μ¦˜μ„ ν™œμš©ν•œ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ” λŠ₯λ ₯을 ν‰κ°€ν•˜λŠ” 것

μ•Œκ³ λ¦¬μ¦˜μ˜ μ„±λŠ₯을 ν‰κ°€ν•˜λŠ” 척도

  • 곡간을 많이 μ‚¬μš©ν•˜λŠ” λŒ€μ‹  μ‹œκ°„μ„ λ‹¨μΆ•ν•˜λŠ” 방법이 ν”νžˆ μ‚¬μš©λœλ‹€.

  • 일반적으둜 μ—°μ‚° νšŸμˆ˜κ°€ 10얡을 λ„˜μ–΄κ°€λ©΄ 1초 μ΄μƒμ˜ μ‹œκ°„ μ§€μ—° λ°œμƒν•œλ‹€κ³  λ³Έλ‹€.

  • ν˜„μ‹€ μ„Έκ³„μ—μ„œ λ™μž‘ μ‹œκ°„μ΄ 1초 이내인 μ•Œκ³ λ¦¬μ¦˜μ„ 섀계할 ν•„μš”κ°€ μžˆλ‹€.

μ‹œκ°„ λ³΅μž‘λ„(Time Complexity)

νŠΉμ • μž…λ ₯값에 따라 μ•Œκ³ λ¦¬μ¦˜μ˜ μˆ˜ν–‰ μ‹œκ°„μ„ 평가

μˆ˜ν–‰ μ‹œκ°„μ€ μ‹€ν–‰ν™˜κ²½μ— 따라 λ‹€λ₯΄κ²Œ μΈ‘μ •λ˜κΈ° λ•Œλ¬Έμ— κΈ°λ³Έ μ—°μ‚°μ˜ μ‹€ν–‰ 횟수둜 μˆ˜ν–‰ μ‹œκ°„μ„ ν‰κ°€ν•œλ‹€.

κΈ°λ³Έ μ—°μ‚°μ΄λž€?

  • 데이터 μž…μΆœλ ₯

  • μ œμ–΄ μ—°μ‚°

  • μ‚°μˆ μ—°μ‚°

μ‹œκ°„ λ³΅μž‘λ„λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄ λ³΅μž‘ν•΄μ§ˆμˆ˜λ‘ 평균적인 경우λ₯Ό κ΅¬ν•˜κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμ— μ΅œμ•…μ˜ 경우둜 μ„±λŠ₯을 νŒŒμ•…ν•œλ‹€.

곡간 λ³΅μž‘λ„(Spade Complexity)

νŠΉμ • μž…λ ₯값에 따라 μ•Œκ³ λ¦¬μ¦˜μ΄ λ©”λͺ¨λ¦¬λ₯Ό μ–Όλ§ˆλ‚˜ μ°¨μ§€ν•˜λŠ”μ§€λ₯Ό 평가

μž…λ ₯ 곡간 + μ•Œκ³ λ¦¬μ¦˜ μžμ²΄κ°€ ν•„μš”λ‘œ ν•˜λŠ” 곡간을 μ˜λ―Έν•œλ‹€.

곡간 λ³΅μž‘λ„ κ·œμΉ™

  • string을 μ œμ™Έν•œ μ›μ‹œκ°’μ€ O(1)

  • string, μ°Έμ‘°κ°’(array, object)λŠ” O(n)

    • λ¬Έμžμ—΄ 길이가 50이라면 길이가 1인 λ¬Έμžμ—΄ 보닀 50λ°° λ§Žμ€ 곡간을 μ°¨μ§€ν•œλ‹€

Big O ν‘œκΈ°λ²•

μ—¬λŸ¬ μ½”λ“œλ₯Ό λΉ„κ΅ν•˜κΈ° μœ„ν•΄ μ•Œκ³ λ¦¬μ¦˜μ˜ μ„±λŠ₯을 ν‰κ°€ν•˜μ—¬ 수치둜 λ‚˜νƒ€λ‚Έ 방법

μž…λ ₯값이 컀질수둝 μ•Œκ³ λ¦¬μ¦˜μ˜ μˆ˜ν–‰μ‹œκ°„(μ‹œκ°„ λ³΅μž‘λ„)이 μ–΄λ–»κ²Œ λ³€ν•˜λŠ”μ§€ μ„€λͺ…ν•œλ‹€.

bigO

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