관리 메뉴

공부기록용

JavaScript 문법 종합(연습05) 본문

✍️문제풀기✍️/JS_Programmers school

JavaScript 문법 종합(연습05)

과부하가즈아 2023. 5. 30. 13:59

Q1. 머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요

 

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ height ≤ 200
  • 1 ≤ array의 원소 ≤ 200
function solution(array, height) {
    var answer = 0;

    for(let i = 0; i<array.length; i++) {
        if(height < array[i]) {
            answer++ // height가 배열array i번째 요소보다 작으면 0인 answer에 ++해줘감
        }
    }

    return answer;
}

// console.log(solution([180, 120, 140], 190))
// 0
function solution(array, height) {
  let cnt = 0;
  array.forEach(num => num > height ? cnt ++ : '')
  return cnt;
}

//   1. 머쓱이보다 키큰사람 숫자를 셀 cnt 변수 선언
//   2. array를 forEach로 돌며 주어진 height보다 큰 요소를 만날때마다
//   3. cnt를 ++해준후,
//   4. cnt를 반환.

 

Q2. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • -10,000 ≤ numbers의 원소 ≤ 10,000
  • 1 ≤ numbers의 길이 ≤ 1,000
function solution(numbers) {
    var answer = [];

    for(let i = 0; i < numbers.length; i++){
        answer.push(numbers[i]*2); 
        // 조건에 맞는 값을 계속 뒤에 붙임
        // [2]->[2, 4]->[2, 4, 6],,,[2, 4, 6, 8, 10]
    }

    return answer;
}

console.log(solution([1, 2, 3, 4, 5]))
function solution(numbers) {
  let answer = [];
  numbers.forEach(number => answer.push(2*number))
  return answer;
}
function solution(numbers) {
    var answer = [];
    for(var i=0; i<numbers.length;i++){
        answer[i]=numbers[i]*2; 
        // answer도 배열인 점을 체크
    }

    return answer;
}
function solution(numbers) {
    return numbers.reduce((a, b) => [...a, b * 2], []);
}
const solution = (numbers) => numbers.map((number) => number * 2)

 

 

Q3. 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 3입니다.
  • 1 ≤ sides의 원소 ≤ 1,000
function solution(sides) {
    var answer = 0;

    // sort() 메소드로 배열의 요소를 정렬
    // 비교함수의 반환값이 음수면 순서를 그대로 유지하고 
    // 반환값이 양수이면 b를 a보다 우선하여 정렬하고 
    // 반환값이 0인 경우 서로에 대해 변경하지 않음
    // 정렬하고 나면 가장 큰 값이 맨 뒤로 감
    const arr = sides.sort((a, b) => a - b);

    if (arr[2] < arr[0] + arr[1]) {
        answer = 1;
    } else {
        answer = 2;
    }
    return answer;
}

console.log(solution([199, 72, 222]))
function solution(sides) {
    sides = sides.sort((a,b) => a-b)
    return sides[0]+sides[1] > sides[2] ? 1 : 2;
}
function solution(sides) {
    var answer = 0;
    const max = Math.max(...sides);
    const sum = sides.reduce((a,b) => a + b, 0) - max;

    answer = max < sum? 1 : 2;

    return answer;
}

 

Q4. 중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • array의 길이는 홀수입니다.
  • 0 < array의 길이 < 100
  • -1,000 < array의 원소 < 1,000
function solution(array) {
    var answer = 0;
    let number = array.length/2;
    let tmpNum = 0;
    while(ascCheck(array)){
        for(let i = 0; i<array.length;i++){
            if(array[i]>array[i+1]){
                tmpNum=array[i];
                array[i]=array[i+1];
                array[i+1]=tmpNum;
            }
        }    
    }

    number= Math.round(number);
    answer=array[number-1];
    return answer;
}

function ascCheck(array){
    for(let i=0;i<array.length;i++){
        if(array[i]>array[i+1]){
            return true;
        }
    }
    return false;
}
function solution(array) {
   
   // sort로 배열 정렬하고,
    const arr = array.sort((a, b) => a - b);

	// array = [1, 2, 7, 10, 11]경우
	// arr.length/2를 하면 인덱스번호로했을때 요소가 5개이면 길이 4로 인식 / 2 하면 = 2이고
    // 배열 array에서 2이면 3번째로 중앙값 7이 나옴
    return array[parseInt(arr.length/2)];

}

 

Q5. 정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 100
function solution(n) {
    var answer = [];

    for (let i = 1; i <= n; i++) {
        if (i % 2 === 1) {  // %나머지 반환 연산자로 나머지가 1이면 홀수인것을 의미
           answer.push(i)
        }
    }

    return answer;
}
console.log(solution(10))
function solution(n) {
    var answer = [];

    for (let i = 1; i<=n; i+=2) answer.push(i)

    return answer;
}
const solution = (n) => 
    Array
        .from({ length: n }, (_, i) => i + 1)
        .filter(i => i % 2 !== 0)

 

Q6.  두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1과 s2는 각각 중복된 원소를 갖지 않습니다.
function solution(s1, s2) {
    let answer = 0;

    for (let i = 0; i < s1.length; i++) {
        for (let j = 0; j < s2.length; j++) {
            if (s1[i] === s2[j]) {
                answer++;
            }
        }
    }

    return answer;

}

console.log(solution(["a", "b", "c"], ["com", "b", "d", "p", "c"]))
function solution(s1, s2) {
    const intersection = s1.filter((x) => s2.includes(x));
    return intersection.length;
}

 

Comments