개발조각

[알고리즘 풀이_Lv0] 양꼬치, 짝수의 합, 배열의 평균값, 머쓱이보다 키 큰 사람 본문

알고리즘🅰/제주코딩베이스캠프 프로그래머스 문제 풀이

[알고리즘 풀이_Lv0] 양꼬치, 짝수의 합, 배열의 평균값, 머쓱이보다 키 큰 사람

개발조각 2023. 3. 10. 13:31
728x90
반응형

*제주코딩베이스캠프의 JavaScript 알고리즘 100일 챌린지를 참고로 정리하고 있습니다.*

 

양꼬치

문제


https://school.programmers.co.kr/learn/courses/30/lessons/120830

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 

양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 

정수 n과 k가 매개변수로 주어졌을 때, 

양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

 

소스코드


function solution(n, k) {
    if(n >= 10){
        k -= ~~(n / 10); // 비트NOT연산자
    }
    return n*12000 + k*2000;
}

 

https://www.youtube.com/watch?v=irf3eMAwIFQ&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS&index=4 


짝수의 합

문제


https://school.programmers.co.kr/learn/courses/30/lessons/120831

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

 

 

해결방안


배열을 만드는 방법은 여러가지입니다.

// 방법1
Array(100) // [enpty * 100] 빈배열 100개

// 방법2
'0'.repeat(100) // '00....0' 0이 100개 이어져 있음
'0'.repeat(100).split('') // ['0', .... '0']

여기서는 방법1을 사용하겠습니다.

 

 

빈 Array에 1~100까지 채우는 방법

Array(100).fill() // 아무것도 안채우면 undefined가 채워진다.

// map으로 1~100까지 숫자를 채워주기
// map은 value, index가 들어가는데 안쓸경우 _로 처리가능
Array(100).fill().map((_, index)=>i+1) // [1, .... 100]

 

짝수만 거르기

// 100은 너무 많으니 10까지 하겠습니다.
Array(10).fill().map((_, index)=>index+1) // [1, ..., 10]

// filter를 사용하여 짝수인 수만 남기기
Array(10).fill().map((_, index)=>index+1).filter(v=> v%2 === 0) // [2, 4, 6, 8, 10]

 

짝수를 모두 더한 값

// reduce를 사용하여 배열의 있는 총 합을 구해주었다.
// 여기서 초기값을 0으로 설정을 해주었는데, 초기값의 기본값이 0임으로 초기값 생략 가능하다.
Array(10).fill().map((_, index)=>index+1).filter(v=> v%2 === 0).reduce((a, c) => a+c, 0) // 30

만약 초기값을 설정을 안할 경우 타입에러가 날 수 있으니 적는게 좋습니다.

 

소스코드


function solution(n) {
    return Array(n).fill().map((_, index)=>index+1).filter(v=> v%2 === 0).reduce((a, c) => a+c, 0);
}

 

https://www.youtube.com/watch?v=7f0QV17x89Y&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS&index=5 


배열의 평균값

문제


https://school.programmers.co.kr/learn/courses/30/lessons/120817

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정수 배열 numbers가 매개변수로 주어집니다.

numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

 

소스코드


function solution(numbers) {
    return numbers.reduce((a,c)=> a+c, 0) / numbers.length;
}

 

https://www.youtube.com/watch?v=h6lArFVp_-0&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS&index=6


머쓱이보다 키 큰 사람

문제


https://school.programmers.co.kr/learn/courses/30/lessons/120585

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다.

머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 

머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.

 

소스코드


// 방법 1
function solution(array, height) {
    let count = 0;
    for(let i of array){
        if(i > height){
            count++;
        }
    }
    return count;
}

 

// 방법 2
function solution(array, height) {    
    return array.filter(v=> v > height).length;
}

https://www.youtube.com/watch?v=C_bzzKnMK2k&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS&index=7 

 

728x90
반응형
Comments