https://school.programmers.co.kr/learn/courses/30/lessons/120891
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[ 문제 ]

[ 내 풀이 ]
function solution(order) {
// 주어진 숫자를 문자열로 변환하고 split로 쪼개서 배열화
let orderArr = order.toString().split('');
// 찾아야하는 문자열들을 선언
let numToClap = ['3','6','9'];
// 조건에 만족할 떄, 카운트할 변수 초기화
let count = 0;
// 주어진 문자열을 반복문을 돌며 조건에 만족하는지 확인하고
// .. 만족하면 count를 1증가
for(let i=0; i<orderArr.length; i++){
if(numToClap.includes(orderArr[i])){
count++;
}
}
return count;
}
[ 다른 풀이 ]
// 숫자를 toString을 통해 문자열로 변환한것은 동일했으나
// .. 전개연산자와 정규식을 사용하여 배열안에 조건에 만족하는 값들만을 전개하였고
// .. 이 배열의 length를 구함으로써 개수를 찾는 방법이었다.
function solution(order) {
var answer = [...order.toString().matchAll(/[3|6|9]/g)].length;
return answer;
}
// 위 코드보다 더 짧게 코딩되어 신기해서 가져왔습니다.
function solution(order) {
return (''+order).split(/[369]/).length-1;
}
// '' + order : 숫자인 order을 문자열로 변환합니다.
// .split(/[369]/) : 정규 표현식 /[369]/을 사용하여 문자열을 3, 6, 9 중 하나를 기준으로 분할합니다.
// : 정규 표현식 /[369]/은 문자열에서 3, 6, 9 중 하나가 있는 모든 위치에서 분할합니다.
// .length-1 : 분할된 배열의 길이를 구하고 -1 합니다.
// : 예를 들어, 12345에서 3을 기준으로 분할하게되면 2개의 요소가 생기게되고,
// : -1을 해주어 분할한 횟수를 구하는 것 입니다. 꽤나 신박한 방법이라고 생각했습니다.
// set과 has를 사용한 방법입니다.
function solution(order) {
// 숫자 3, 6, 9를 포함하는 Set 객체를 생성합니다.
// Set은 주어진 값이 포함되어있는지에 대한 여부를 빠르게 확인할 수 있는 자료구조입니다.
const mySet = new Set([3,6,9]);
// 숫자 order를 문자열로 변환하고 각 문자열을 개별요소로 가지는 배열로 분할합니다.]
// 배열의 각 요소를 Number타입으로 변환한 후, mySet에 포함되는지 확인합니다.
// 포함되어있다면 필터링된 배열에 남게됩니다.
// .length를 통해 배열의 길이를 반환합니다.
return String(order).split('')
.filter(num => mySet.has(Number(num)))
.length;
}반응형
'Algorithm > Javascript' 카테고리의 다른 글
| [ 프로그래머스 ] 대문자와 소문자 ( JS ) (7) | 2024.07.23 |
|---|---|
| [ 프로그래머스 ] 암호 해독 ( JS ) (2) | 2024.07.23 |
| [ 프로그래머스 ] 삼각형의 완성조건(1) ( JS ) (0) | 2024.07.19 |
| [ 프로그래머스 ] 배열 원소의 길이 ( JS ) (0) | 2024.07.14 |
| [ 프로그래머스 ] 컨트롤 제트 ( JS ) (0) | 2024.07.13 |
