[Programmers | JavaScript] ๐Ÿ“ŒDay3 - ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ, ์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๊ธฐ

Haileyยท2023๋…„ 1์›” 18์ผ
0

Algorithm | JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
6/9
post-thumbnail

๐Ÿ“ŒDay3

1๏ธโƒฃ ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ

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

array์˜ ๊ธธ์ด๋Š” ํ™€์ˆ˜์ž…๋‹ˆ๋‹ค.
0 < array์˜ ๊ธธ์ด < 100
-1,000 < array์˜ ์›์†Œ < 1,000
  • ๋ฐฉ๋ฒ• 1
    sort()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์–ด์„œ ๋ฐฉ๋ฒ•1-1๋กœ ์‚ฌ์šฉํ•˜๋‹ˆ ์ •ํ™•์„ฑ์ด 44% ๋‚˜์™€ ์‹คํŒจ ํ›„ sort()์˜ ์ •์˜๋ฅผ ์ฐพ์•„๋ณด๊ณ ๋ฐฉ๋ฒ•1-2๋กœ ์ˆ˜์ •ํ•ด์„œ ํ…Œ์ŠคํŠธ์— ํ†ต๊ณผ ํ–ˆ๋‹ค.

    function solution(array) {
        let index = Math.floor(array.length/2)
        // return answer = array.sort()[index]  --- ๋ฐฉ๋ฒ• 1-1
        return array.sort((a,b)=>a-b)[index]	  --- ๋ฐฉ๋ฒ• 1-2
    }
    • sort() : sort() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์ •๋ ฌํ•œ ํ›„ ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ์€ stable sort๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •๋ ฌ ์ˆœ์„œ๋Š” ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. MDN sort()
      -> ๊ธฐ๋ณธ ์ •๋ ฌ ์ˆœ์„œ๊ฐ€ ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจํ•จ

      • sort() ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
        array.sort((a,b)=>a-b)
      • sort() ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
        array.sort((a,b)=>b-a)
  • ๋ฐฉ๋ฒ• 2
    index๋ฅผ ์—†์• ๊ณ  ๋ฐ”๋กœ ์ž…๋ ฅํ•œ ๋ฐฉ๋ฒ•

    function solution(array) {
      return array.sort((a, b) => a - b)[Math.floor(array.length / 2)];
    }

2๏ธโƒฃ ์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๊ธฐ

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

0 < array์˜ ๊ธธ์ด < 100
0 โ‰ค array์˜ ์›์†Œ < 1000
  • ๋ฐฉ๋ฒ• 1
    Map๊ณผ Set ์ •๋ฆฌ
    Map() ํ‚ค๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ฐ์ฒด์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋งต์€ ํ‚ค์— ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Œ
    • new Map() โ€“ ๋งต์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • map.set(key, value) โ€“ key๋ฅผ ์ด์šฉํ•ด value๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • map.get(key) โ€“ key์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • map.has(key) โ€“ key๊ฐ€ ์กด์žฌํ•˜๋ฉด true, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • map.delete(key) โ€“ key์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    • map.clear() โ€“ ๋งต ์•ˆ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    • map.size โ€“ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • map.keys() โ€“ ๊ฐ ์š”์†Œ์˜ ํ‚ค๋ฅผ ๋ชจ์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ(iterable, ์ดํ„ฐ๋Ÿฌ๋ธ”) ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • map.values() โ€“ ๊ฐ ์š”์†Œ์˜ ๊ฐ’์„ ๋ชจ์€ ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • map.entries() โ€“ ์š”์†Œ์˜ [ํ‚ค, ๊ฐ’]์„ ํ•œ ์Œ์œผ๋กœ ํ•˜๋Š” ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋Š” for..of๋ฐ˜๋ณต๋ฌธ์˜ ๊ธฐ์ดˆ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค.
  • Math.max() ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›์€ 0๊ฐœ ์ด์ƒ์˜ ์ˆซ์ž ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜
function solution(array) {
    let map = new Map();

    // Map ๊ฐ์ฒด ์ดˆ๊ธฐํ™”
    for(let i = 0; i <= Math.max(...array); i++){
        map.set(i, 0);    
    }

    // array ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” Map ๊ฐ์ฒด์˜ key๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค
    for(let i = 0; i < array.length; i++){
        map.set(array[i], map.get(array[i]) + 1);
    }

    // Map ๊ฐ์ฒด์˜ value๋งŒ ๋ชจ์•„์„œ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ ๋‹ค
    let arr = Array.from(map.values());

    // ์ตœ๋Œ€๊ฐ’ ์‚ฐ์ถœ
    let max = Math.max(...arr);

    // ์ตœ๋Œ€๊ฐ’์ด ํ•˜๋‚˜๋งŒ ์žˆ๋‹ค๋ฉด max, ์—ฌ๋Ÿฌ ๊ฐœ ์ค‘๋ณต๋œ๋‹ค๋ฉด -1 ์ถœ๋ ฅ
    if(arr.indexOf(max) !== arr.lastIndexOf(max)){
        return -1;
    } else {
        return arr.indexOf(max);
    }
}
profile
ํŒ€์—์„œ ๊ผญ ํ•„์š”ํ•œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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