문제를 풀기위해 아래와 같은 요소들을 고려하였다.
- 문자열을 split을 이용해 분리하여 p와 y를 검출한다.
- p와 y변수를 두고 개수만큼 값을 상승시켰다. 코드를 줄여보기 위해 return문에 삼항연산자를 이용해보았다.
더보기
function solution(s){
let arr = s.split("");
let p=0, y=0;
arr.forEach((val, idx) => {
if(val === "p" || val === "P") p++;
if(val === "y" || val === "Y") y++;
})
return p===y ? true : false;
}
• match
문자열에서 특정 문자를 찾을때 사용할 수 있는데 정규표현식을 사용한다는 특징이 있다.
예를들어 문제에서 사용할 수 있는 방식으로는 아래와 같다.
function solution(s){
let result = s.match(/p/ig); // [ 'p', 'P', 'P', 'p' ]
}
solution("pPtciPip")
주어진 문자열에서 p를 찾아냈다. 이 코드에서 사용된 정규표현식을 정리해보면 다음과 같다.
- /p/ : 슬래시 사이의 문자를 매칭한다. 여기서는 p를 찾는 역할을 한다.
※ 뒤에 플래그 g가 없으면 단일일치찾기를 시행한다. 이 경우 가장 앞에 있는 일치문자를 찾아낸 뒤 해당 문자의 인덱스, 입력된 문자열 정보등이 반환된 배열에 포함된다. - 플래그 i : 대소문자를 무시한다.
- 플래그 g : 모든 일치를 찾는다. 이 경우 모든 문자를 찾아 배열로 반환하지만 단일일치찾기에 있던 추가 정보는 포함되지 않는다.
이 외에도 여러가지 정규표현식 사용 방법이 있다. 이를 활용하면 match를 통해 빠르게 일치문자를 찾아낼 수 있다.
※ 다른 사람의 풀이 참고
다른 사람의 풀이를 보면서 같은 문제를 다양하게 접근할 수 있다는것을 알 수 있었다. 코드 가독성, 실제 실행 속도 등을 고려하면 가장 좋은방법은 아닐 수 있겠지만 여러가지 활용방법을 유연하게 사용할 수 있는 능력을 기를 필요도 있을 것 같다.
• toUpperCase, toLowerCase를 활용
match를 활용하지 않고 문자를 직접 탐색할수도 있는데 이때 미리 문자열을 대문자 혹은 소문자로 변환해두면 대/소문자를 모두 탐색할 필요가 없어 코드를 간소화할 수 있다.
• split을 활용
대문자 혹은 소문자로 변경된 문자열을 split("P") 등 찾는 알파벳을 이용해 문자열을 나누어 배열로 변환하면 찾는 문자를 제외한 나머지 문자들만 배열로 변환된다. 찾는 문자의 길이가 같은지를 파악할때 유용하게 사용할 수 있다.
'기타 > 알고리즘' 카테고리의 다른 글
(JS) toUpperCase(), toLowerCase() [Programmers - JadenCase 문자열 만들기] (0) | 2024.10.04 |
---|---|
(JS) 반복문의 break [Programmers - 붕대 감기] (0) | 2024.10.04 |
(JS) Set [Programmers - 신고 결과 받기] (0) | 2024.10.01 |
(JS) 객체를 배열로 변환, 절댓값 [Programmers - 성격 유형 검사하기] (0) | 2024.09.30 |
(JS) 동적 객체 key와 배열/객체 탐색 [Programmers - 달리기 경주] (0) | 2024.09.30 |