[프로그래머스/Lv1/자바스크립트] 문자열 내 p와 y의 개수
2023. 5. 1. 12:43
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12916?language=javascript#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
function solution(s) {
var lowerS = s.toLowerCase();
if (lowerS.match(/p/g)?.length == lowerS.match(/y/g)?.length) {
return true;
}
else {
return false;
}
}
메모
입력으로 들어오는 문자열 s를 toLowerCase() 메소드로 모두 소문자로 변환시킨 뒤
정규표현식을 사용해서 p와 y의 개수를 세고 그 값을 비교하여 true 혹은 false를 반환하도록 함수를 제작했다.
정규표현식을 사용해 p와 y의 개수를 세는 과정에서 문자열에 p와 y가 없다면 null값을 반환하게 되는데 이 null에 length 프로퍼티를 접근하려고 하면 런타임 에러가 발생한다.
그렇기 때문에 옵셔널 체이닝을 활용해서 '?.' 앞의 객체가 null이나 undefined 값이라면 검사를 멈추고 undefiend를 반환하도록 했다.
이 방법을 사용하면 문자열에 p와 y가 둘 다 없는 상황에서도 조건식이 (undefined == undefined)로 true 값이 반환되게 된다.
옵셔널 체이닝 문법은 아래 링크에서 확인할 수 있다.
https://ko.javascript.info/optional-chaining
옵셔널 체이닝 '?.'
ko.javascript.info
'코딩테스트 > 연습문제' 카테고리의 다른 글
[프로그래머스/Lv1/자바스크립트] 자연수 뒤집어 배열로 만들기 (0) | 2023.05.02 |
---|---|
[프로그래머스/Lv1/자바스크립트] 정수 제곱근 판별 (0) | 2023.05.01 |
[프로그래머스/Lv1/자바스크립트] x만큼 간격이 있는 n개의 숫자 (0) | 2023.05.01 |
[프로그래머스/Lv1/자바스크립트] 나머지가 1이 되는 수 찾기 (0) | 2023.05.01 |
[프로그래머스/Lv1/자바스크립트] 자릿수 더하기 (0) | 2023.05.01 |