[js] 7의 개수 (lv.0, 정답률 84%)

sookyoung.k·2024년 5월 11일
0
post-thumbnail

머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array의 원소 ≤ 100,000

나의 풀이

function solution(array) {
    let count = array.map((_, i) => {
        let count = array[i].toString().match(/7/g);
        return count == null ? 0 : count.length;
    });
    let result = count.reduce((acc, cur) => {
        return acc += cur;
    }, 0)
    return +result;
}

이 문제를 푼 공을 Y언니에게 바칩니다,,,

  • count 변수에 map()으로 돌린 array 배열을 새로 담아준다.
    - map() 내부에서 array를 돌며 문자열로 변환한 후 match()메서드를 통해 7이 들어가 있는 요소를 골라낸다.
    • 만일 count 가 null 일 경우 (7이 들어간 문자가 없을 경우) 0을 반환하고, 있을 경우 길이(length)를 반환한다.
    • 내가 여기서... 7이 있을 경우 length를 반환해놓곤 없을 경우 빈 배열을 반환해서 50점 나왔었다. Y언니가 0으로 반환해야 하지 않냐고 말해줘서!! 낼름 성공
  • count를 다시 reduce()를 해줘서 총 합산을 더해준다. 하지만 그냥 반환할 경우 문자열이 나가버리기 때문에... 숫자로 바꾼 후에 리턴한다.

다른 풀이 1

function solution(array) {
    return array.join('').split('7').length-1;
}

아니 이렇게 간단한 풀이가...

  • 배열을 전부 문자열로 합쳐준 후... split()함수를 사용해서 7을 기준으로 나눠준다.
  • split은 기준 값을 만날 때마다 앞뒤를 잘라준다... split MDN 찾아보세요 값을 기준으로 양 옆을 나눠주기 때문에 본래의 값보다 요소가 하나 많아진다 그렇기 때문에 -1을 해주세요
  • 무슨 말인지 이해가 안 가신다면 .. . 하루 뒤에 다시 보자 (SH님 설명해주세요)

다른 풀이 2

function solution(array) {
    return(array.join().split("").filter((el)=>{return el=="7"}).length)
}
  • join으로 합쳐준다 (하지만 문자열로 합칠 때 ''를 안 써주면 쉼표가 생겨벌임)
  • 그리고 그걸 하나씩 배열로 쪼갠다
  • 그리고 filter 함수를 써서 '7'만 뽑아주고 그 길이를 반환한다.
profile
영차영차 😎

0개의 댓글