๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜

[codility] JS Lv4-3 MaxCounter

by Tamii 2021. 9. 24.
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ 4-3 MaxCounter

๋‚ด ํ’€์ด 1 (์˜ค๋‹ต) 

function solution(N, A) {
  let ans = new Array(N).fill(0);
  A.forEach((a) => {
    if (a <= N) {
      ans[a - 1] += 1;
    }
  });

  return ans;
}

 

A๋ฅผ ๋Œ๋ฉฐ idx๋ฅผ ๋„˜์€ ๊ฐ’์„ ๋งŒ๋‚˜๋ฉด ๊ทธ ์ค‘์˜ ๊ฐ€์žฅ ํฐ ๊ฐœ์ˆ˜๋กœ ๋ฐฐ์—ด๊ฐ’์„ ๋ชจ๋‘ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ์ธ๋ฐ

๋‹จ์ง€ idx๋งŒ ํ•˜๋Š”์ค„ ์•Œ๊ณ  ์ด๋ ‡๊ฒŒ ํ’€์ดํ–ˆ๋‹ค. 

 

 

 

๋‚ดํ’€์ด 2 (77%)

function solution(N, A) {

  let ans = new Array(N).fill(0);
  let maxNum = 0;

  A.forEach((a) => {
    let idx = a - 1;
    if (a <= N) {
      ans[idx] += 1;
      maxNum = Math.max(maxNum, ans[idx]);
    } else ans.fill(maxNum);
  });

  return ans;
}

๊ฐ’์„ ๋„ฃ์–ด์ค„ ๋•Œ๋งˆ๋‹ค maxNum์„ ๊ตฌํ•˜๊ณ  

๊ฐ’์ด idx๋ฅผ ๋„˜์œผ๋ฉด maxNum์œผ๋กœ ์ฑ„์›Œ์ค€๋‹ค.

 

->2๊ฐ€์ง€ testcase๊ฐ€ ์˜ค๋‹ต์ด ๋˜์—ˆ๋‹ค.

 

 

๋‚ดํ’€์ด 3 (100%)

function solution(N, A) {

  let ans = new Array(N).fill(0);
  let maxNum = 0;
  let last = 0;

  A.forEach((a) => {
    let idx = a - 1;
    if (a <= N) {
        if(ans[idx] < last){
            ans[idx] = last;
        }
        ans[idx] +=1;
        if(maxNum < ans[idx]){
            maxNum = ans[idx]
        }
    } else last = maxNum;
  });

  ans.forEach((a,idx) =>{
      if(a < last){
          ans[idx] = last
      }
  })

  return ans;
}

Math.max ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ง€์šฐ๊ธฐ ์œ„ํ•ด

last ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด  A๋ฅผ ๋Œ๋ฉฐ ๊ฐ ๊ฐ’๊ณผ last๋ฅผ ๋น„๊ตํ–ˆ๋‹ค.

 

 

 

๐Ÿฅณ ๋ฌธ์ œ๋ฅผ ์ฐจ๋ถ„ํ•˜๊ฒŒ ์ฝ๊ณ  Math ํ•จ์ˆ˜๋Š” ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋„๋ก...!

 

๋Œ“๊ธ€