๐Ÿ“š

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ดˆ Big-O

Created
Jun 14, 2021
Language
Algorithm

Big-O

  • ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์€ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์ œ๊ฑฐํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ถ„์„์„ ์‰ฝ๊ฒŒ ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•จ.
  • ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ž…๋ ฅ๋œ N์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์‹คํ–‰๋˜๋Š” ์กฐ์ž‘์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ„.
  • ๊ณต๊ฐ„๋ณต์žก๋„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‹คํ–‰๋ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘์„ ๋‚˜ํƒ€๋ƒ„. ์š”์ฆ˜์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐœ์ „์œผ๋กœ ์ค‘์š”๋„๊ฐ€ ๋‚ฎ์•„์ง.
 Big-O์˜ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œ
Big-O์˜ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œ

์‹œ๊ฐ„ ๋ณต์žก๋„

notion image

K๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

a๋ฒˆ์งธ๋ถ€ํ„ฐ b๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ์ •๋ ฌํ•˜์—ฌ k๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ผ.
function solution(array, commands) { const answer = []; commands.forEach(comd => { const begin = comd[0] - 1; const end = comd[1]; const k = comd[2] - 1; const cropped = array.slice(begin, end); const sorted = cropped.sort((n1,n2)=>n1-n2); answer.push(sorted[k]); }); return answer; }

ํ’€์ด

  1. slice๋ฅผ ์ด์šฉํ•˜์—ฌ a๋ฒˆ์งธ๋ถ€ํ„ฐ b๋ฒˆ์งธ์˜ ์ˆซ์ž๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.
  1. ๋งŒ๋“  ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ๋‹ค.
  1. ์ •๋ ฌ๋œ ๋ฐฐ์—ด์˜ k๋ฒˆ์งธ ์ˆซ์ž๋ฅผ answer ๋ฐฐ์—ด์— push ํ•œ๋‹ค.
๐Ÿ’ก
- a์™€ b๊ทธ๋ฆฌ๊ณ  k์˜ ์ˆซ์ž ๊ธฐ์ค€์ด 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— -1์„ ํ•ด์ค€ ์ . - forEach๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•œ ์ . - slice๊ฐ€ end๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์ .

์‚ฌ์šฉ๋œ ์†์„ฑ

  • slice() - ์–ด๋–ค ๋ฐฐ์—ด์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ๋๊นŒ์ง€(๋์€ ํฌํ•จํ•˜์ง€ ์•Š์Œ) ๋ณต์‚ฌ๋ณธ์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•จ. ์›๋ณธ ๋ฐฐ์—ด์€ ๋ฐ”๋€Œ์ง€ ์•Š์Œ.
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant']; console.log(animals.slice(2)); // expected output: Array ["camel", "duck", "elephant"] console.log(animals.slice(2, 4)); // expected output: Array ["camel", "duck"]
  • sort() - ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์ •๋ ฌํ•œ ํ›„ ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•จ. ๋ณต์‚ฌ๋ณธ์ด ์•„๋‹Œ ์› ๋ฐฐ์—ด์ด ์ •๋ ฌ๋จ. ๋น„๊ต ์†์„ฑ์„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์œ ๋‹ˆ ์ฝ”๋“œ ์ˆœ์„œ๋กœ ๋น„๊ต, ์ •๋ ฌํ•จ.
const months = ['March', 'Jan', 'Feb', 'Dec']; months.sort(); console.log(months); // expected output: Array ["Dec", "Feb", "Jan", "March"] const array1 = [1, 30, 4, 21, 100000]; array1.sort(); console.log(array1); // expected output: Array [1, 100000, 21, 30, 4]
๐Ÿ’ก
//๋น„๊ต ์†์„ฑ function compareNumbers(a, b) { return a - b; }
  • push() - ๋ฐฐ์—ด์˜ ๋์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๋ฐฐ์—ด์˜ ์ƒˆ๋กœ์šด ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
const animals = ['pigs', 'goats', 'sheep']; const count = animals.push('cows'); console.log(count); // expected output: 4 console.log(animals); // expected output: Array ["pigs", "goats", "sheep", "cows"]

์Œ์–‘ ๋”ํ•˜๊ธฐ

์–ด๋–ค ์ •์ˆ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •์ˆ˜๋“ค์˜ ์ ˆ๋Œ“๊ฐ’์„ ์ฐจ๋ก€๋Œ€๋กœ ๋‹ด์€ ์ •์ˆ˜ ๋ฐฐ์—ด absolutes์™€ ์ด ์ •์ˆ˜๋“ค์˜ ๋ถ€ํ˜ธ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋‹ด์€ ๋ถˆ๋ฆฌ์–ธ ๋ฐฐ์—ด signs๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์‹ค์ œ ์ •์ˆ˜๋“ค์˜ ํ•ฉ์„ ๊ตฌํ•˜์—ฌ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
//๋‚ด ํ’€์ด function solution(absolutes, signs) { for(let i =0; i<signs.length; i++){ if(signs[i] === true ){ continue; } else{ absolutes[i] = -absolutes[i]; } } const answer = absolutes.reduce((a,b) => a+b); return answer; } //์ฐธ๊ณ  ํ’€์ด function solution(absolutes, signs) { let answer = 0; absolutes.forEach((v, i) => { if (signs[i]) { answer += v; } else { answer -= v; } }) return answer; }

ํ’€์ด

  1. ๋ถˆ๋ฆฐ๊ฐ’์˜ ์„ฑ์งˆ์„ ์‚ฌ์šฉํ•ด if else๋ฌธ์œผ๋กœ answer์— ๊ฐ’์„ ๊ฐ€๊ฐํ•œ๋‹ค.
  1. ๋ชจ๋“  ๋ฐฐ์—ด์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
๐Ÿ’ก
- true, false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฑฐ๋ผ๋ฉด if๋ฌธ์—์„œ ๊ฒ€์ฆํ•  ํ•„์š” ์—†์Œ. - forEach๊ฐ€ ๋” ์•ˆ์ •์ ์ž„. for๋ฌธ์€ ๋ณ€์ˆ˜๋ฅผ ์ „๋ถ€ ์„ ์–ธํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ. - answer์—์„œ ๋”ํ•˜๊ณ  ๋นผ์ฃผ๋Š” ๋ฐฉ์‹์ด ์žˆ์Œ.

์‚ฌ์šฉ๋œ ์†์„ฑ

  • reduce - ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ๋ฆฌ๋“€์„œ(reducer) ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ.
var sum = [1, 2, 3].reduce((a, b) => a + b);

๊ฐ€์šด๋ฐ ๊ธ€์ž ๊ฐ€์ ธ์˜ค๊ธฐ

๋‹จ์–ด s์˜ ๊ฐ€์šด๋ฐ ๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”. ๋‹จ์–ด์˜ ๊ธธ์ด๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด ๊ฐ€์šด๋ฐ ๋‘๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
//๋‚ด ํ’€์ด function solution(s) { function returnCenterCha(){ const splits = s.split(''); const divided = parseInt(splits.length/2); let spliced if(splits.length%2 === 0){ spliced = splits.splice(divided-1,2); } else { spliced = splits.splice(divided,1); } const convertToString = spliced.toString().replace(",",""); return convertToString } return returnCenterCha(); } //์ฐธ๊ณ  ํ’€์ด function solution(s) { const mid = Math.floor(s.length/2); return s.length % 2 === 1 ? s[mid] : s[mid-1]+s[mid]; }

ํ’€์ด

  1. ์ค‘๊ฐ„์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  1. ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ 2๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๋ฉด ๊ฐ€์šด๋ฐ ์ˆ˜๋ฅผ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฐ€์šด๋ฐ -1๊ณผ ๊ฐ€์šด๋ฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๐Ÿ’ก
๋ฌธ์ž์—ด๋„ ๋Œ€๊ด„ํ›„[]๋ฅผ ํ†ตํ•ด์„œ ์ˆœ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ.

์‚ฌ์šฉ๋œ ์†์„ฑ

  • Math.floor() - ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ฆฌ๊ณ  ๋ฐ˜ํ™˜ํ•จ.
console.log(Math.floor(5.95)); // expected output: 5 console.log(Math.floor(-5.05)); // expected output: -6
  • parseInt() - ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
var result = parseInt(13 / 5); // ๊ฐ’์€ 2 var remainder = 13 % 5; // ๊ฐ’์€ 3
  • JS์—์„œ ์ฝค๋งˆ ์—†์• ๋Š” ๋ฐฉ๋ฒ•
const numberStr = "123,456,789"; // ์ฝค๋งˆ ์ œ๊ฑฐ const number = numberStr.replace(",", "");
  • toString() - ๋ฐฐ์—ด์—์„œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜.
const array1 = [1, 2, 'a', '1a']; console.log(array1.toString()); // expected output: "1,2,a,1a"

ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ๊ฐ€๋ฆฌ๊ธฐ

์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋ฌธ์ž์—ด phone_number๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ „ํ™”๋ฒˆํ˜ธ์˜ ๋’ท 4์ž๋ฆฌ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ˆซ์ž๋ฅผ ์ „๋ถ€ *์œผ๋กœ ๊ฐ€๋ฆฐ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
function solution(phone_number) { const sliced = phone_number.slice(-4); return "*".repeat(phone_number.length-4)+sliced }

ํ’€์ด

  1. ์ „ํ™”๋ฒˆํ˜ธ ๋’ท 4์ž๋ฆฌ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.
  1. ์ถ”์ถœํ•œ ๊ฐœ์ˆ˜๋ฅผ ์ œ์™ธํ•œ ์ „ํ™”๋ฒˆํ˜ธ ์ˆ˜๋งŒํผ *๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.
  1. ๋ฐ˜๋ณตํ•œ ๊ฐœ์ˆ˜์— ์ถ”์ถœํ•œ ์ „ํ™”๋ฒˆํ˜ธ ๋’ท 4์ž๋ฆฌ๋ฅผ ๋”ํ•œ๋‹ค.

์‚ฌ์šฉ๋œ ์†์„ฑ

  • repeat - ๋ฌธ์ž์—ด์„ ์ฃผ์–ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด ๋ถ™์ธ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•จ.
'abc'.repeat(2); // 'abcabc' 'abc'.repeat(3.5); // 'abcabcabc'

ํฐ์ผ“๋ชฌ

N๋งˆ๋ฆฌ ํฐ์ผ“๋ชฌ์˜ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด nums๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, N/2๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘, ๊ฐ€์žฅ ๋งŽ์€ ์ข…๋ฅ˜์˜ ํฐ์ผ“๋ชฌ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„, ๊ทธ๋•Œ์˜ ํฐ์ผ“๋ชฌ ์ข…๋ฅ˜ ๋ฒˆํ˜ธ์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
//๋‚ด ํ’€์ด function solution(nums) { const max = parseInt(nums.length/2); const set = new Set(nums); const setSize = set.size; return max < setSize ? max : setSize } //์ฐธ๊ณ  ํ’€์ด function solution(nums) { const max = parseInt(nums.length/2); return Math.min(max, new Set(nums).size); }

ํ’€์ด

  1. ์ตœ๋Œ€๋กœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  1. Set ๊ฐ์ฒด๋กœ ์ค‘๋ณต์—†๋Š” ๋ฐฐ์—ด์„ ๊ตฌํ•œ๋‹ค.
  1. ์ด ๋‘˜์„ ๋น„๊ตํ•˜์—ฌ ์ตœ๋Œ€๋กœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํฐ์ผ“๋ชฌ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์‚ฌ์šฉ๋œ ์†์„ฑ

  • Set - ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ๋ชจ์•„๋†“์€ Collection ๊ฐ์ฒด.
var mySet = new Set(); mySet.add(1); // Set { 1 } mySet.has(1); // true const arr = ['a', 'b', 'c', 'b']; const set = new Set(arr); set.size; // 3
๐Ÿ’ก
- new ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ Set ๊ฐ์ฒด๋ฅผ ๊ณต์œ ์ž์›์œผ๋กœ ์‚ฌ์šฉํ•จ. - Set์€ n log n์ž„. ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ(Binary Search Tree)

์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด participant์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด completion์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
function solution(participant, completion) { participant.sort() completion.sort() for(let i = 0; i<participant.length; i++){ if(participant[i] !== completion[i]){ return participant[i] } } }

ํ’€์ด

  1. ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฌธ์ž์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
  1. ์ •๋ ฌ๋œ ๋ฐฐ์—ด ์ค‘ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์›์†Œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ participant์˜ ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์˜ˆ์‚ฐ

๋ถ€์„œ๋ณ„๋กœ ์‹ ์ฒญํ•œ ๊ธˆ์•ก์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด d์™€ ์˜ˆ์‚ฐ budget์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋Œ€ ๋ช‡ ๊ฐœ์˜ ๋ถ€์„œ์— ๋ฌผํ’ˆ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
function solution(d, budget) { const arr = d.sort(function(a, b) { return a - b; }); let cnt = 0; let sum = 0; for(let i=0; i<arr.length; i++) { sum += arr[i] if(budget >= sum){ cnt++ } } return cnt; }

ํ’€์ด

  1. sort ๋ฉ”์†Œ๋“œ๋กœ ๋ถ€์„œ๋ณ„ ๊ธˆ์•ก์„ ์ •๋ ฌํ•จ.
  1. ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์˜ˆ์‚ฐ์ด ๊ธˆ์•ก์„ ๋„˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€์˜ ํ•ฉ๊ณผ ์ง€์› ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
๐Ÿ’ก
- break์™€ return์˜ ์œ„์น˜๋ฅผ ์ž˜ ํŒŒ์•…ํ•ด์•ผ ํ•จ. sum๊ณผ budget์ด ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์„ ๊ฒฝ์šฐ if๋ฌธ์„ ํ†ต๊ณผํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— break ๋˜๋Š” return buy๋ฅผ ์จ์ฃผ์–ด์•ผ ํ•จ.

์ถ”๊ฐ€ info

  • call by value (๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ) - ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ธ์ž์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์–ด๋„, ์™ธ๋ถ€์˜ ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ. call by reference (์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ) - ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ธ์ž์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด, ์•„๊ทœ๋จผํŠธ๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด์˜ ๊ฐ’๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝ.

๋ชจ์˜๊ณ ์‚ฌ

1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€์˜ ์ •๋‹ต์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์€ ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
function solution(answers) { var answer = []; const sut1 = [1,2,3,4,5]; const sut2 = [2,1,2,3,2,4,2,5]; const sut3 = [3,3,1,1,2,2,4,4,5,5]; let point = [0,0,0]; for(let i = 0; i<answers.length; i++){ if(sut1[i % 5] === answers[i]){ point[0] += 1; } if(sut2[i % 8] === answers[i]){ point[1] += 1; } if(sut3[i % 10] === answers[i]){ point[2] += 1; } } let maxCnt = Math.max(...point); for(let j=0; j<3; j++){ if(point[j] === maxCnt){ answer.push(j+1); } } return answer; }

ํ’€์ด

  1. ์ˆ˜ํฌ์ž์˜ ๋‹ต์„ const์— ๋‹ด๋Š”๋‹ค.
  1. ๋ฌธ์ œ์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฐ ๋ฐฐ์—ด์˜ ์ˆซ์ž์™€ answers์˜ ์ˆซ์ž๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ผ์น˜ํ•˜๋ฉด point๋ฅผ 1์”ฉ ์˜ฌ๋ฆฐ๋‹ค.
  1. max ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ๋Œ€๊ฐ’์„ ์•Œ์•„๋‚ธํ›„ ์ตœ๋Œ€๊ฐ’๊ณผ point๊ฐ€ ์ผ์น˜ํ•˜๋ฉด ํ•ด๋‹น ์ˆซ์ž๋ฅผ answer์— pushํ•œ๋‹ค.
๐Ÿ’ก
- point ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ตœ์ข… ๋น„๊ต ๋•Œ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•œ ์ . - ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž๋ฅผ ๋‹ต ๋ฐฐ์—ด ์ˆซ์ž๋งŒํผ ๋‚˜๋ˆ„๋ฉด ํ•ด๋‹น ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ .

์‚ฌ์šฉ๋œ ์†์„ฑ

  • ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž(%) - ๋‚˜๋ˆ„์–ด์ง„ ํ›„, ๊ทธ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
console.log(12 % 5); // expected output: 2
  • three dots(...) - ๋ฐฐ์—ด์ด๋ผ๋ฉด ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์„ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ๋ฆฌํ„ดํ•˜๊ณ , ์˜ค๋ธŒ์ ํŠธ๋ผ๋ฉด ์—ด๊ฑฐํ• ์ˆ˜ ์žˆ๋Š” ๋‚˜๋จธ์ง€ ํ”„๋กœํผํ‹ฐ๋“ค์„ ๋ฌถ์–ด ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ฐ˜ํ™˜ํ•จ.
const a = [1,2,3]; const aa = [...a, ...a]; console.log(aa) // [1, 2, 3, 1, 2, 3]
  • max() - ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›์€ 0๊ฐœ ์ด์ƒ์˜ ์ˆซ์ž ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•จ.
Math.max(10, 20); // 20

ํฌ๊ฑฐ๋‚˜ ์ž‘์€ ์ˆ˜ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

largest๋ž€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ํ›„ ๊ฐ ๋ฐฐ์—ด์„ ๋Œ๋ฉฐ largest์™€ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ํฐ ์ˆ˜๋กœ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ์‹.
function max(arr) { let largest; if(arr.length>0) { largest=arr[0];} else { largest = 0;} for(let i=0;i<arr.length;i++) { if(arr[i]>largest) largest = arr[i]; } return largest; }