[Programmers] (Javascript) ์ˆœ์œ„ ๊ฒ€์ƒ‰

2022. 5. 2. 17:03ยท๐Ÿ’ฏ CodingTest/Programmers

https://programmers.co.kr/learn/courses/30/lessons/72412

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆœ์œ„ ๊ฒ€์ƒ‰

["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"] ["java and backend and junior and pizza 100","pyt

programmers.co.kr

- ์ตœ๊ทผ ํ’€์—ˆ๋˜ ๋ฌธ์ œ ์ค‘ ๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

 

โ–ถ ์ฝ”๋“œ : 

let data = new Map();

function makeData(info)
{
    let scores = [];
    for(let s of info)
    {
        s = s.split(' ');
        let arr = s.slice(0,4);
        let score = parseInt(s[4]);
        scores.push(score);
        s= arr.join('');
        if (data.has(s))
        {
            val = data.get(s);
            val = [...val, score]
            data.set(s, val);
        }
        else
        {
            data.set(s,[score]);
        }    
    }

    let keyList = data.keys();

    for (const key of keyList)
    {
        let temp = data.get(key).sort((a,b) => a-b);
        data.set(key, temp);            
    }
}

function solution(info, query) {
    let answer = [];
    makeData(info);

    let keyList = [...data.keys()];
    
    query.map((s) => {
        s = s.split(' ');
        let qScore = s.pop();
        s= s.filter((element) => {if (element !== '-' && element !== 'and'){return true;}});        
        let temp = keyList.filter((key) => s.every(word => key.includes(word)));
        
        let count = 0;
        for (const key of temp)
        {
            let d = data.get(key);
            count += d.length - binarySearch(d, qScore);
        }

        answer.push(count)
    });

    return answer;
}

function binarySearch(arr, score){
    let low = 0;
    let high = arr.length - 1;
    let mid;

    while(low < high)
    {
        mid = Math.floor((low+high) / 2);
        // lower bound ์‚ฌ์šฉ high๋ฅผ mid -1์ด ์•„๋‹Œ mid๋กœ ์„ค์ •
        if(arr[mid] >= score)
        {
            high = mid;
        }
        else
        {
            low = mid + 1;
        }
    }

    //๋งŒ์ผ arr์— score๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
    if(arr[high] < score){
        high += 1;
    }
    return high;
}

 

โ–ถ ๋ฌธ์ œ ํ’€์ด :

1. ์ดˆ๊ธฐ info์— ๋Œ€ํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ํŒŒ์‹ฑํ•˜๊ณ  Map()์— key๋กœ ๋ฌธ์ž์—ด, value๋กœ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

  - ์ด๋•Œ value๋Š” ์ ์ˆ˜๋“ค์˜ ๋ฐฐ์—ด๋กœ ์ €์žฅํ•˜๋ฉฐ, Map() ์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ๊ฐ key๋ฅผ ์ด์šฉํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ค€๋‹ค.(์ด๋ถ„ ํƒ์ƒ‰์„ ์œ„ํ•ด)

2. query ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ํ•ด๋‹น query์— ํฌํ•จ๋œ ๋ฌธ์ž์—ด๋“ค์ด Map()์˜ key ๋ฌธ์ž์—ด์— ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์‚ฌ ํ›„ ํฌํ•จํ•˜๋Š” ํ‚ค๋“ค๋งŒ์„ ์ถ”์ถœํ•œ๋‹ค. 

3. ์ดํ›„ ์ถ”์ถœํ•œ key๋“ค์— ๋Œ€ํ•ด Map()์—์„œ ์ ์ˆ˜๋ฐฐ์—ด์„ ๊ฐ€์ ธ์™€ ์ด๋ถ„ ํƒ์ƒ‰์„ ์ด์šฉํ•ด ์›ํ•˜๋Š” index๋ฅผ ์ฐพ๊ณ  ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

4. ๊ฐ query๋ฌธ์— ๋Œ€ํ•˜์—ฌ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ฟผ๋ฆฌ๋ฌธ ๋งˆ๋‹ค countํ•œ ๊ฐ’์„ answer๋ฐฐ์—ด์— push ํ•œ๋‹ค.

 

 

'๐Ÿ’ฏ CodingTest > Programmers' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Programmers] 124 ๋‚˜๋ผ์˜ ์ˆซ์ž  (0) 2022.06.11
[Programmers] ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•  (0) 2022.06.11
[Programmers] (Javascript) ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ  (0) 2022.04.28
[Programmers] (Javascript) ์ถ”์„ ํŠธ๋ž˜ํ”ฝ  (0) 2022.04.26
[Programmers] (Javascript) ํŠœํ”Œ  (0) 2022.04.25
'๐Ÿ’ฏ CodingTest/Programmers' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Programmers] 124 ๋‚˜๋ผ์˜ ์ˆซ์ž
  • [Programmers] ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•
  • [Programmers] (Javascript) ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ
  • [Programmers] (Javascript) ์ถ”์„ ํŠธ๋ž˜ํ”ฝ
S.Honey
S.Honey
  • S.Honey
    Algo ์“ฐ์ž
    S.Honey
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (123)
      • ํšŒ๊ณ  (0)
        • ์ทจ์—… ํ›„ ํšŒ๊ณ  (0)
      • ๐Ÿƒ Frontend Road-Map (2)
        • ๐Ÿšฉ Summary (1)
        • ๐Ÿ“š Road-Map Contents (1)
        • ๐ŸŸง HTML (0)
        • ๐ŸŸฆ CSS (0)
        • ๐ŸŸจ Javascript (0)
        • โฌœ React (0)
        • ๐ŸŸช Redux (0)
      • Backend (0)
        • QueryDSL (0)
      • ๐Ÿ’ป Programming Language (54)
        • C# (51)
        • Flutter-Dart (3)
        • Java (0)
      • ๐Ÿ“š Computer Science (4)
        • Algorithms (4)
        • Database (0)
        • Network (0)
        • Operating System(OS) (0)
      • ๐Ÿ’ฏ CodingTest (60)
        • BaekJoon (22)
        • Programmers (34)
        • CodeTree (4)
      • โœ’๏ธ Design Pattern (1)
      • ๐Ÿฑ Etc (2)
        • Jenkins Plugin ์ œ์ž‘๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

      • ๐Ÿ“– ๊ณต๋ถ€ ์ฐธ๊ณ  ๊ต์žฌ ๋ฐ ์ž๋ฃŒ
    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      Algorithm
      JS
      ์Šคํ„ฐ๋””
      ์‹œ๋ฎฌ๋ ˆ์ด์…˜
      ๋ฐฑ์ค€
      BFS
      ๊ตฌํ˜„
      Flutter
      ๋ฌธ์ž์—ด ํŒŒ์‹ฑ
      Java
      ์ฝ”๋“œํŠธ๋ฆฌ
      ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ์ด์ง„ํƒ์ƒ‰
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      BAEKJOON
      sort
      DP
      c#
      ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ์นด์นด์˜ค
      ์‚ผ์„ฑsw์—ญํ…Œ
      programmers
      ์“ฐ์…จ์ž–์•„
      JavaScript
      DART
      ํŒŒ์ด์ฌ
      ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
      ์ž๋ฃŒ๊ตฌ์กฐ
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
    S.Honey
    [Programmers] (Javascript) ์ˆœ์œ„ ๊ฒ€์ƒ‰
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”