記錄

[코딩테스트 입문] Day 1 ~ 5 본문

FRONTEND STUDY/Programmers

[코딩테스트 입문] Day 1 ~ 5

prts 2022. 11. 26. 19:36

- 프로그래머스에서 제공하는 코딩테스트 입문(Lv.0) 문제들을 풀어본 내용을 일부 정리했음
- 풀이를 어느 정도 고민한 문제들만 정리(너무 단순한 문제들 제외)

Day 2 : 사칙연산, 조건문, 배열

분수의 덧셈

첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

function solution(denum1, num1, denum2, num2) {
    var answer = [];
    //분자
    let denum=(denum1*num2)+(denum2*num1);
    //분모
    let num = num1 * num2;
    //최소공배수
    let gcd = (a, b) => a % b === 0 ? b : gcd(b, a % b);
    let min=gcd(denum,num)
    
    answer=[denum/min,num/min]
    
    return answer;
}

Day 3. 사칙연산, 배열, 수학

중앙값 구하기

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

function solution(array) {
    var answer = 0;
    //array sort로 순서 정렬
    //array 길이 절반 나눠서 math.floor로 소수점 버림
    answer=array.sort((a,b)=>a-b)[Math.floor(array.length/2)];
    return answer;
}

최빈값 구하기

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

function solution(array) {
    //최빈값을 return하되 최빈값 여러개면 -1 return
    //!!최빈값의 개수 아니고 최빈값 자체!! -> value값이 max인 key 값을 구해야 함
    
    //최빈값 구하기
    const maxCount=array.reduce((a,c)=>{
        a[c]=(a[c]||0)+1
        return a
    },{})
    //최빈값의 반복 횟수
    let max=Math.max(...Object.values(maxCount))
    //max를 가진 key값
    let mode=Object.keys(maxCount).filter(key=>maxCount[key]===max)
    return mode.length === 1 ? +mode[0] : -1
}

* reduce 이용한 최빈값 구하는 방법 설명글

https://velog.io/@minew1995/JavaScript-%EC%B5%9C%EB%B9%88%EA%B0%92-%EA%B5%AC%ED%95%98%EA%B8%B0

 

[JavaScript] 최빈값 구하기

최빈값 구하기 1. 기본 설명 2. 작동 설명

velog.io

Day 4. 수학, 배열

피자 나눠 먹기(2)

머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

function solution(n) {
    var answer = 0;
    //피자 한 판=6조각
    //n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자를 먹어야 함
    //6명>1판(1조각씩), 10명>5판(30조각>3조각씩), 4명>2판(12조각>3조각씩)
    //최소 피자 판 수 > 최소공배수
    let getLCM=(a, b) =>{
        let lcm = 1;
        while ((lcm % a !== 0 || lcm % b !== 0) && lcm < a * b) lcm += 1;
        	return lcm;
        }
    answer=getLCM(n,6)/6;
    return answer;
}
배열의 평균값

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

function solution(numbers) {
    //numbers[i]값 전부 합하고 numbers.length 값을 나누기
    var answer = 0;
    let add=0;
    let numL=numbers.length
    
    for(let i=0;i<numL;i++){
        add+=numbers[i];
        answer=add/numL;
    }
    //forEach 쓰는 방법
    // numbers.forEach((item)=>{
    //     add+=item;
    //     answer=add/numL;
    // })
    
    return answer;
}

 

Comments