JavaScript 기초 - 1

김형준 Kim Hyeong Jun·2023년 7월 21일
0

1. 프로그래머스 - 음양 더하기

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

풀이

function solution(absolutes, signs) {
    var answer = 123456789;
    
    let count = 0;
    let sum = 0;
    
    absolutes.forEach(function(item){
        if(signs[count] === true) {
            sum += item;
        } else {
            sum -= item;
        }
        count += 1;
    })
    
    return sum;
}

2. 프로그래머스 - 문자열 내 p와 y의 개수

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

풀이

function solution(s){
    var answer = true;

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    console.log('Hello Javascript')
    
    let pCount = 0;
    let yCount = 0;
    
    let sArr = [...s];
    
    sArr.forEach(function(item) {
        if(item === "y" || item === "Y") {
            yCount += 1;
        }
        
        if(item === "p" || item === "P") {
            pCount += 1;
        }
    })
    
    return pCount === yCount ? true : false;
}

다른 풀이를 통해 공부한 것

1. JavaScript 배열의 reduce 메서드

function solution(s){

    return [...s.toLowerCase()].reduce((acc, cur) => {
        if(cur ==='p') return acc + 1;
        else if(cur ==='y') return acc - 1;
        return acc;
    }, 0) ? false : true;
}
  • 기본 사용 방법
const array = [1,2,3,4,5];

const initialValue = 0;
const sumWithInitial = array.reduce(
  (accumulator, currentValue) => accumulator + currentValue,
  initialValue
);

console.log(sumWithInitial); // Exported output : 15

reduce 메소드는 네 개의 인자를 가진다.
1. 누산기(acc)
2. 현재 값(cur)
3. 현재 인덱스(idx)
4. 원본 배열(src)

reduce 메서드의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 된다.

Reference - mdn web docs https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

2. JavaScript 배열의 forEach 메서드에서 2개의 매개변수를 이용하는 것

function solution(absolutes, signs) {
    let answer = 0;
    absolutes.forEach((v, i) => {
        if (signs[i]) {
            answer += v;
        } else {
            answer -= v;
        }
    })
    return answer;
}
  • 기본 표현 :
arr.forEach(function(item) {
  // main logic 
})
  • 화살표 함수 :
arr.forEach(item, index, array) => {
  // main logic 
}

위와 같은 형태로 3개의 매개변수를 사용할 수 있다.
1. item : 배열의 각 요소를 나타내는 매개변수
2. index : 각 요소의 순서를 나타내는 매개변수
3. array : 원본 배열 그 자체를 나타나는 매개변수

profile
I want be a developer🙂

0개의 댓글