숫자로 이루어진 배열인 nums를 인자로 전달합니다.
숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.
예를 들어,
nums = [3,2,3]
return 3nums = [2,2,1,1,1,2,2]
return 2
가정) nums 배열의 길이는 무조건 2개 이상
function moreThanHalf(nums) {
let answer = 0;
for (let i = 0; i < nums.length; i++) {
let sum = [];
for (let j = 0; i < nums.length; i++) {
if(nums[i] === nums[j]) {
sum.push(nums[i]);
}
}
if (sum.length >= nums.length/2) {
answer = nums[i];
}
}
return answer;
}
리플릿 테스트 결과 : undefined 혹은 0
function moreThanHalf(nums) {
for (let i = 0; i < nums.length; i++) {
let sum = 0;
for (let j = 0; i < nums.length; i++) {
if(nums[i] === nums[j]) {
sum += 1;
}
}
if (sum >= nums.length/2) {
return nums[i]
}
}
}
리플릿 테스트 2차 결과 : 여전히 undefined 혹은 0
undefined 혹은 0이 나온다는 것은 조건문이 정상적으로 작동하지 않는다는 얘기
무엇이 문제일까...
이럴수가... 문제는 오탈자였다
이중 for문에서 j반복문에 i를 적어놨다. ;;
그렇다면 위에 방식도 똑같이 작동할까?
function moreThanHalf(nums) {
for (let i = 0; i < nums.length; i++) {
let sum = 0;
for (let j = 0; j < nums.length; j++) {
if(nums[i] === nums[j]) {
sum += 1;
}
}
if (sum >= nums.length/2) {
return nums[i];
}
}
}
리플릿 테스트 3차 결과 : test passed