JS 알고리즘 뽀개기 - 2

👉🏼 KIM·2023년 5월 25일
0

알고리즘

목록 보기
2/4

문자열 s를 배열에 담아서 요소의 개수를 구하는 방법으로 코드를 짜려고 했다.
배열에서 특정 값 개수 구하는 방법은 약 3가지 정도로 정리해보았다.

  1. for 반복문
  2. filter
  3. reduce

가장 간단하게는 for문이었지만 reduce를 너무 쓰고 싶었지만 reduce라는 개념이 좀 어렵고 그래서 우선 filter를 사용해보았다.



filter를 사용해보자

대소문자를 구별하지 않아서 toLowerase() 사용해서 소문자로 모두 바꿔준 뒤에 비교하기로 했다.
저번에 split()와 join()을 배워 문자열을 배열의 각 요소로 넣어주는 split()를 사용했고, ""를 써서 문자 하나하나를 배열에 담아주었다.
pPoooyY -> ["p","p","o","o","o","y","y"]

그리고 filter를 사용해서 p와 y의 개수를 구해서 서로 같을 때만 return을 해주었다!!

function solution(s){
    const arr = s.toLowerCase().split("");
    let elementP = arr.filter(element => 'p' === element).length;
    let elementY = arr.filter(element => 'y' === element).length;
    
    return elementP === elementY;
}

reduce를 사용해보자.

filter()와 reduce() 차이를 알아보니 filter는 조건에 맞는 요소를 걸러내는 데에 사용되고, reduce는 배열의 요소를 누적하거나 변형하여 단일 값을 반환하는 데에 사용된다고 한다.
고로 이 문제는 reduce가 더 적합해 보인다.

function solution(s) {
    const arr = s.toLowerCase().split("");
    const countP = arr.reduce((count, element) => (element === 'p' ? count + 1 : count), 0);
    const countY = arr.reduce((count, element) => (element === 'y' ? count + 1 : count), 0);
    
    return countP === countY;
}

reduce 메서드를 사용하여 arr배열의 각 요소를 순회한다. 초기값 count를 0으로 설정하고, 각 요소 element가 'p'와 'y'인 경우 count를 1 증가시킨다.
countP와 countY가 같으면 true, 다르면 false 반환한다.


마무리

혼공스를 읽고, 정리한 개념을 사용한 첫 문제라서 신기하면서도 자신감이 생겼다. 앞으로도 열심히 블로그에 글도 올리고, 알고리즘 문제를 통해 내것으로 만들어야겠다. 화이링 🙋🏼‍♀️

profile
프론트는 순항중 ¿¿

0개의 댓글