문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120891
답안1 (메서드체이닝)
function solution(order) {
return order.toString()
.split('')
.filter(e => (e === '3') || (e === '6') || (e === '9')).length
}
- 자연수를 파라미터로 받는다.
- 이걸 문자열로 만들어준뒤 각 요소마다 3, 6, 9인지 비교해서 filter로 배열을 만들어준뒤 length를 리턴하면 된다.
- 행복
답안2(정규표현식)
function solution(order) {
let value = order.toString().match(/[369]/g) ?? []
return value.length
}
- match 메서드는 문자열이 정규식과 매치되는 부분을 검색하여 배열에 넣어 반환한다.
- 이 때 매치가 되는 부분이 없다면 null을 반환하는데, null에는 length가 없다.
- 따라서 nullish 연산자를 사용해서 null이라면 빈 배열이라도 만들어주고
- 이후에 value값의 length를 최종적으로 리턴하면 문제가 풀린다.
'코테 문제 풀이' 카테고리의 다른 글
[레벨 0] 중복된 문자 제거 (object, Set) (0) | 2023.01.10 |
---|---|
[레벨 0] 중복된 문자 제거 (for문, Set) (0) | 2022.12.18 |
[레벨 0] 외계행성의 나이 (문자열 - 배열 - 문자열) (0) | 2022.12.17 |
[레벨 0] 배열 회전시키기 (pop, push, shift, unshift) (1) | 2022.12.17 |
[레벨 0] 가위 바위 보 (if 노가다, 객체 활용) (0) | 2022.12.17 |