[Day 3] ๐Ÿ”ฅ์ž…๋ฌธ - ์‚ฌ์น™์—ฐ์‚ฐ, ๋ฐฐ์—ด, ์ˆ˜ํ•™

nanaยท2023๋…„ 1์›” 12์ผ
0

๐Ÿ”ฅ Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
3/10
post-thumbnail

1. ๋‚˜๋จธ์ง€ ๊ตฌํ•˜๊ธฐ

๐Ÿ’Ÿ ๋ฌธ์ œ ์„ค๋ช…

  • ์ •์ˆ˜ num1, num2๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, num1๋ฅผ num2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿ’Ÿ ์ œํ•œ ์‚ฌํ•ญ

  • 0 < num1 โ‰ค 100
  • 0 < num2 โ‰ค 100

๐Ÿ’Ÿ ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • ์ž…์ถœ๋ ฅ ์˜ˆ #1
    num1์ด 3, num2๊ฐ€ 2์ด๋ฏ€๋กœ 3์„ 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ 1์„ return ํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…์ถœ๋ ฅ ์˜ˆ #2
    num1์ด 10, num2๊ฐ€ 5์ด๋ฏ€๋กœ 10์„ 5๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ 0์„ return ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ–๏ธ solution.js

function solution(num1, num2) {
  return num1 % num2;
}

2. ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ

๐Ÿ’Ÿ ๋ฌธ์ œ ์„ค๋ช…

  • ์ค‘์•™๊ฐ’์€ ์–ด๋–ค ์ฃผ์–ด์ง„ ๊ฐ’๋“ค์„ ํฌ๊ธฐ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1, 2, 7, 10, 11์˜ ์ค‘์•™๊ฐ’์€ 7์ž…๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ค‘์•™๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

๐Ÿ’Ÿ ์ œํ•œ ์‚ฌํ•ญ

  • array์˜ ๊ธธ์ด๋Š” ํ™€์ˆ˜์ž…๋‹ˆ๋‹ค.
  • 0 < array์˜ ๊ธธ์ด < 100
  • -1,000 < array์˜ ์›์†Œ < 1,000

๐Ÿ’Ÿ ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • ์ž…์ถœ๋ ฅ ์˜ˆ #1
    ๋ณธ๋ฌธ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…์ถœ๋ ฅ ์˜ˆ #2
    9, -1, 0์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ฉด -1, 0, 9์ด๊ณ  ๊ฐ€์žฅ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.

๐Ÿ–๏ธ solution.js

// 1. ์ •๋ ฌ
// 1-1. ๋ฐฐ์—ด ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.
// 1-2. ์ฐพ์œผ๋ฉด ์ƒˆ ๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.
// 1-3. ์›๋ž˜ ๋ฐฐ์—ด์— ์ฐพ์€ ๊ฐ’์€ ์ง€์šด๋‹ค.
// 1-4. ๋ฐฐ์—ด ๊ธธ์ด ๋งŒํผ ๋ฐ˜๋ณตํ–ˆ์œผ๋ฉด ๋๋‚ธ๋‹ค. ์•„๋‹ˆ๋ฉด 1-1.๋กœ ๋Œ์•„๊ฐ„๋‹ค.
// 2. ๊ฐ€์šด๋ฐ ๊ฐ’ ๊บผ๋‚ด๊ธฐ

function solution(array) {
  // minNumber
  let arrayCnt = 0;
  let newArray = [];
  while (arrayCnt < array.length) {
    let minNumber = 1000;
    // ๋ฐฐ์—ด์—์„œ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ
    let cnt = 0;
    while (cnt < array.length) {
      if (minNumber > array[cnt]) {
          minNumber = array[cnt];
      }
      cnt = cnt + 1; 
    }
    // minNumber โ† ์ตœ์†Œ๊ฐ’
    newArray.push(minNumber); 
    // ๋ฐฐ์—ด์—์„œ ์ฐพ์€ ๊ฐ’ ์ง€์šฐ๊ธฐ
    let cnt2 = 0;
    while (cnt2 < array.length) {
      if (minNumber === array[cnt2]) {
        array[cnt2] = 1000;
        break;
      }
      cnt2 = cnt2 + 1;
    }
    arrayCnt = arrayCnt + 1; 
  }      
  return newArray[Math.floor(array.length / 2)];
} 


๐Ÿ“ array.sort ์‚ฌ์šฉ
function solution (array) {
  return array.sort((a,b) => a-b)[Math.floor(array.length / 2)]
}

๐Ÿ“Ž Array.prototype.sort() : sort() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์ •๋ ฌํ•œ ํ›„ ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ์€ stable sort๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •๋ ฌ ์ˆœ์„œ๋Š” ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.


3. ์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๊ธฐ

๐Ÿ’Ÿ ๋ฌธ์ œ ์„ค๋ช…

  • ์ตœ๋นˆ๊ฐ’์€ ์ฃผ์–ด์ง„ ๊ฐ’ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋‚˜์˜ค๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ๋นˆ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’Ÿ ์ œํ•œ ์‚ฌํ•ญ

  • 0 < array์˜ ๊ธธ์ด < 100
  • 0 โ‰ค array์˜ ์›์†Œ < 1000

๐Ÿ’Ÿ ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • ์ž…์ถœ๋ ฅ ์˜ˆ #1
    [1, 2, 3, 3, 3, 4]์—์„œ 1์€ 1๊ฐœ 2๋Š” 1๊ฐœ 3์€ 3๊ฐœ 4๋Š” 1๊ฐœ๋กœ ์ตœ๋นˆ๊ฐ’์€ 3์ž…๋‹ˆ๋‹ค.

  • ์ž…์ถœ๋ ฅ ์˜ˆ #2
    [1, 1, 2, 2]์—์„œ 1์€ 2๊ฐœ 2๋Š” 2๊ฐœ๋กœ ์ตœ๋นˆ๊ฐ’์ด 1, 2์ž…๋‹ˆ๋‹ค. ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฏ€๋กœ -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…์ถœ๋ ฅ ์˜ˆ #3
    [1]์—๋Š” 1๋งŒ ์žˆ์œผ๋ฏ€๋กœ ์ตœ๋นˆ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

๐Ÿ–๏ธ solution.js

// 1. ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์›์†Œ๋ฅผ ํ™•์ธํ•˜๋ฉฐ ๊ฐฏ์ˆ˜๋ฅผ ์„ผ๋‹ค.
// 2. ์ตœ๋นˆ๊ฐ’์„ ๊ทธ๋•Œ๊ทธ๋•Œ ๊ธฐ๋กํ•œ๋‹ค.

function solution(array) {
  let sortedArray = array.sort((a,b) => a-b);
  var answer = 0;
  let cnt = 0;
    
  let mode = -1; // ์ตœ๋นˆ๊ฐ’์ด ๋ญ”์ง€
  let modeRepeatCnt = 0;  // ์ตœ๋นˆ๊ฐ’์ด ๋ ๋•Œ ๋ช‡๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ๋œ๊ฑด์ง€
  let repeatCnt = 0;  // ํ˜„์žฌ ๋˜‘๊ฐ™์€ ์ˆซ์ž๊ฐ€ ๋ช‡๋ฒˆ ๋“ฑ์žฅํ–ˆ๋Š”์ง€
  let beforeNumber = 0;  // ์ง€๊ธˆ ๋ณด๊ณ  ์žˆ๋Š” ์ˆซ์ž ์ด์ „ ์ˆซ์ž
  let isDupMode = false;  
  while (cnt < array.length) {
    if (beforeNumber !== array[cnt]) {
      repeatCnt = 1;
    } else {
        repeatCnt = repeatCnt + 1;    
    }
    if (repeatCnt === modeRepeatCnt) {
      if (mode !== array[cnt]){
        isDupMode = true;     
      }  
    }  
    if (repeatCnt > modeRepeatCnt) {
      mode = array[cnt];
      modeRepeatCnt = repeatCnt;
      isDupMode = false;  
    }  
    beforeNumber = array[cnt];  
    cnt = cnt + 1;  
  }
  if (isDupMode) return -1;
  return mode;
}

4. ์ง์ˆ˜๋Š” ์‹ซ์–ด์š”

๐Ÿ’Ÿ ๋ฌธ์ œ ์„ค๋ช…

  • ์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n ์ดํ•˜์˜ ํ™€์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿ’Ÿ ์ œํ•œ ์‚ฌํ•ญ

  • 1 โ‰ค n โ‰ค 100

๐Ÿ’Ÿ ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • ์ž…์ถœ๋ ฅ #1
    10 ์ดํ•˜์˜ ํ™€์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด [1, 3, 5, 7, 9]๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

  • ์ž…์ถœ๋ ฅ #1
    15 ์ดํ•˜์˜ ํ™€์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด [1, 3, 5, 7, 9, 11, 13, 15]๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ–๏ธ solution.js

function solution(n) {
  var answer = [];
  let cnt = 1;
  
  while (cnt <= n) {
    if (cnt % 2 === 1) {
      answer.push(cnt);
    }
    cnt = cnt + 1;  
  }
  return answer;
}
profile
โœง ์ค‘์š”ํ•œ๊ฑด ๊บพ์ด์ง€ ์•Š๋Š” ๋งˆ์Œ ๐Ÿ”ฅ แ•™(โ€ขำฉโ€ข)แ•ค ๐Ÿ”ฅ

0๊ฐœ์˜ ๋Œ“๊ธ€