[ TIL 39 ] Code-kata day 6

_dodo_heeยท2021๋…„ 4์›” 13์ผ
0

ALGORITHM

๋ชฉ๋ก ๋ณด๊ธฐ
5/8
post-thumbnail

Code Kata ๋ฌธ์ œ ๐Ÿ“œ

์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ธ nums๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
์ˆซ์ž์ค‘์—์„œ ๊ณผ๋ฐ˜์ˆ˜(majority, more than a half)๊ฐ€ ๋„˜์€ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ์„ธ์š”.

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•ด๋ณด์ž ๐Ÿง

๋ฐฐ์—ด์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž ์ค‘์— ๊ณผ๋ฐ˜์ˆ˜ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ด์„œ
๋งค๊ฐœ๋ณ€์ˆ˜์•ˆ์— ์žˆ๋Š” ์ˆซ์ž๋งŒํผ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Code Kata ์ฒซ๋ฒˆ์งธ ์‹œ๋„ ๐Ÿ’ก

function moreThanHalf(nums) {
	let majority = nums.length / 2;  //3.5
  
	for (let i = 0; i < nums.length; i++) {
    	let count = 0;
    
    	for (let j = 0; j < nums.length; j++) {
      		if (nums[i] === nums[j]) {
        	count += 1
      	}
    }
    
    if (count > majority) {
      return nums[i]
    }
  }
}

์ฒซ๋ฒˆ์งธ ์‹œ๋„ review โœ๏ธ

majority๋ผ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์€ nums์˜ ๊ธธ์ด/2 ์ด๋‹ค.
let i = 0; i๋Š” nums์˜ ๊ธธ์ด ๋งŒํผ ๋ฐ˜๋ณต์‹œํ‚ค๊ณ 
let count = 0;์œผ๋กœ ์„ธํŒ…ํ•ด์ฃผ๊ณ 
์ด์ค‘ ํฌ๋ฌธ์œผ๋กœ j =0;์ด๊ณ  j< nums.length ๊ธธ์ด ๋ฐ˜ํผ ๋ฐ˜๋ณต์‹œํ‚จ๋‹ค.
๋งŒ์•ฝ nums์˜ i์ธ๋ฑ์Šค๊ฐ’๊ณผ num์˜j์ธ๋ฑ์Šค๊ฐ’์ด ๊ฐ™์œผ๋ฉด count์— 1์„ ๋”ํ•ด์„œ ํ• ๋‹นํ•ด์ค€๋‹ค.

ํฌ๋ฌธ์ด ๋‹ค ๋Œ๋ฉด ์นด์šดํŠธ๊ฐ’์ด ๊ณผ๋ฐ˜์ˆ˜๊ฐ’๋ณด๋‹ค ํฌ๋ฉด
num์˜ ์ธ๋ฑ์Šค i๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.


Code Kata ๋‹ค๋ฅธ ๋ฌธ์ œํ’€์ด ๋ฐฉ๋ฒ• ๐Ÿ’ก

function moreThanHalf(nums) {
  let half = nums.length /2;
  let cntNums = nums.reduce(function(allNums, num){
    allNums[num] = (allNums[num] || 0) + 1
    return allNums
  }, {});
  let maxCntNum = 0;
  //let half = Object.keys(cntNums).length/ 2;
  // ์—ฌ๊ธฐ์„œ half ๊ตฌํ•˜๋ฉด ์•ˆ ๋จ ๊ฐ์ฒด length ๊ตฌํ•˜๊ธฐ ์ฐธ์กฐ
  for(let i in cntNums){
    // if(maxCntNum < cntNums[i]){
    //   maxCntNum = i;
    // }
    maxCntNum = maxCntNum < cntNums[i] ? i : maxCntNum
  }
  return Number(maxCntNum) > half ? Number(maxCntNum) : 0;
}

์ƒˆ๋กœ์šด ์•Œ๊ฒŒ ๋œ ๋ฉ”์„œ๋“œ ๐Ÿ“Œ

๋‚ด๊ฐ€ ์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์•Œ๊ฒŒ๋œ ๋ฉ”์„œ๋“œ์˜ ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ฒ ๋‹ค. (์•„์ฃผ ๊ฐ„๋‹จํžˆ)

reduce

๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ reduceํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Number

์ˆซ์ž ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ค๋‹ˆ๋‹ค.

profile
๋ฌด๋Ÿญ๋ฌด๋Ÿญ ์ž๋ผ๋‚˜๋Š” ๋„๋„ ๊ฐœ๋ฐœ์„ฑ์žฅ์ผ๊ธฐ

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