- [JS] 7의 개수-프로그래머스 120912 join(' ') split(' ') filter() 함수2024년 06월 06일
- 주사위 clice
- 작성자
- 2024.06.06.:01
반응형문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/120912
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 0 ≤ array의 원소 ≤ 100,000
입출력 예
array result [7, 77, 17] 4 [10, 29] 0 입출력 예 설명
입출력 예 #1
- [7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다.
입출력 예 #2
- [10, 29]에는 7이 없으므로 0을 return 합니다.
문제 풀이 생각하기
우선 테스트 케이스 1번을 가지고 생각해보자
[ 7, 77, 17]에서 7의 개수만 뽑아햐 하니까, 7만 모아서 새로운 배열을 만든 다음에 그 배열의 길이를 length로 출력하면 되겠다
7만 뽑기 위해서는 filter()함수를 사용해 새로운 배열을 만들어야 하고 , 그러면 주어진 배열을 하나의 문자열로 합친 다음 모두 한 자리 수 배열로 바꾸면 된다
다른 테스트 케이스를 생각해보아도 반례가 없는것 같다
이제 순서를 정리하고 코드를 짜보자
최종 순서
0. 배열이 주어진다 arrary
[7, 77, 17]
1. 주어진 배열을 하나의 문자열로 합친다 let concatArray=array.join('');
77717
2. 다시 하나 하나 쪼갠다 concatArray.split('')
['7', '7', '7', '1', '7']
3. filter 함수를 사용해 7인 값들만 모아 새로운 배열을 만든다 filter((n)=>n==='7')
['7', '7', '7', '7']
4. length 함수로 배열의 길이를 구한다 .length
['7', '7', '7', '7'] => 길이: 4
최종 코드
const solution=(array)=>{ let concatArray=array.join(''); return (concatArray.split('').filter((n)=>n==='7')).length; }
잘 한다면 한줄로 줄일 수도 있다
const solution=(array)=>(array.join('').split('').filter((n)=>n==='7')).length;
또 다른 풀이(유저 최다 풀이)
7 을 기준으로 나눌 수도 있다
function solution(array) { return array.join('').split('7').length-1; }
length-1을 하는 이유는 다음과 같다
막대기를 두번 자르면 세조각, 10번 자르면 11조각이 된다
자르는 기준이 7이니까, 나눠진 조각수에서 1을 빼줘야 몇번 쪼갰는지, 즉 7의 개수가 몇개인지 구할 수 있다ⓒ clice lee
clicelee의 개발일지 입니다반응형'프론트 > Javascript Typescript' 카테고리의 다른 글
[자바스크립트] 캐릭터의 좌표 - 프로그래머스 120861 객체의 속성값 전달하여 변경하기 (0) 2024.06.19 [JS] 영어가 싫어요-프로그래머스 120894 (1) 2024.06.15 [JS로 코테 정복하기] 자주 나오는 함수 정리 + 관련 프로그래머스 문제들 (0) 2024.06.06 [자바스크립트] True와 False 에러 Uncaught ReferenceError (0) 2024.05.31 [JS] 머쓱이보다 키 큰 사람-프로그래머스 120585 filter함수 사용법 (0) 2024.05.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)