위코드 코드카타를 풀며 정리한 내용입니다.
숫자로 이루어진 배열 nums 를 인자로 전달하면, 숫자중에서 과반수가 넘은 숫자를 반환하세요.
//입력
nums = [2, 2, 1, 1, 1, 2, 2]
//출력
2
배열내 숫자를 하나씩 비교해야 하므로 for 반복문을 두번 돌리면서 비교합니다. 숫자 중 과반수가 넘으면 되므로 이 숫자가 전체 배열의 길이의 절반보다 높은 값을 반환합니다.
fuction 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];
}
}
}
코드 별로 설명을 적어보면,
fuction 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; // 변수에 +1
}
}
if (sum > nums.length/2) { // 같은 값의 갯수가 배열의 과반을 넘으면
return nums[i]; // 해당 요소 반환
}
}
}