[TIL]_Code Kata (#7)
🌈 Code Kata [문제 해결능력 기르기]
🌀 문제
숫자로 이루어진 배열인 nums를 인자로 전달합니다. 숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.
예를 들어,
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
➡️ 처음에 나는 숫자들 중에서 가장 많이 들어온 숫자를 반환하라고 잘못 이해했었다. 하지만 문제는 배열 안에 들어온 총 숫자들의 갯수에서 과반수가 넘어야 한다였다.
🤯 내가 작성한 코드
function moreThanHalf(nums) {
// 여기에 코드를 작성해주세요.
let result = 0;
for(let i=0; i<nums.length; i++) {
let majorityCount = 0;
for(let h=0; h<nums.length; h++) {
if(nums[i] === nums[h]) {
result = result + 1;
}
if(result > majorityCount) {
majorityCount = result;
}
}
if(result > nums.length / 2) {
return nums[i];
}
}
}
👉 내가 작성한 코드로 돌렸을 경우에 처음 들어온 숫자 두개중에서만 답이 나와서 오답처리 되었다. 만약 배열에 [1,2,2,2,2,1,5,5,5,5,5,5,5] 이렇게 숫자들이 들어올 경우에 5가 답으로 나오지 않았다. ㅠㅠㅠㅠ 😱 그래서 구글링하고, 물어보면서 설명을 들은 결과👇
✏️ 정답 코드
var majorityElement = function(nums) {
let res = 0, count = 0;
for (let num of nums) {
if (count === 0) {
res = num;
count++;
} else {
(num === res) ? count++ : count--;
}
}
return res;
};
📌 내가 생각한 이 코드의 해설
👉 값을 담을 변수와, 숫자를 비교할 변수를 선언하고 모두 초기값을 0으로 설정했다.
👉 for..of로 반복문을 만들어주고 그 안에서 res와 num을 비교한 후 같다면 count++, 다른 값이 나올 경우 count--를 해주었다.
🔥 for..of문은 반복 가능한 객체에 대해서 반복하고 그 개별 속성 값을 반환한다.
Author And Source
이 문제에 관하여([TIL]_Code Kata (#7)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@j-jhoo/TILCode-Kata-7저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)