728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/12916?language=javascript
코드
function solution(s){
const count_p = s.match(/p|P/g); //p의 개수 , /p/gi
const count_y = s.match(/y|Y/g); //y의 개수 , /y/gi
if ((!count_p) && (!count_y)) return true;
else if ((!count_p) || (!count_y)) return false;
else return (count_p.length === count_y.length) ? true : false;
}
후기
- 문제 이해 : 문자열 내 p와 y의 개수를 비교해 같으면 true, 다르면 false를 return하고, p,y가 모두 없으면 항상 true를 return하기
- 문제를 보자마자 정규식을 이용하여 p,y의 개수를 구해야겠다는 생각을 하였고, 이를 활용하기 위해 match함수를 사용했다
- match() : 문자열 안에 특정 단어를 찾고 싶을 때 사용하는 함수로서 특정 단어가 포함되어 있는지 여부를 알 수 있다. 나아가 특정 단어를 찾는 데 그치지 않고 정규식을 이용하여 특정 패턴을 찾는 것도 가능하다
- match함수 사용법 : string.match("찾고싶은 특정 단어") >> 특정 단어를 string안에서 찾게 되면 이를 return 함
- 응용하여 match 함수 뒤에 length를 붙이면 특정 단어의 개수를 알 수 있다
- 주의할 점) 정규식을 통해 반환된 변수 count_p, count_y의 경우에는 반환할 것이 없으면 빈 배열인 []가 아니라 null이 반환되기 때문에 length가 적용되지 않는다
- 이 문제는 조건이 까다롭진 않았지만 p만 있는 경우, y만 있는 경우, 둘다 없는경우, 둘 다 있는 경우 등 고려해야 할 것들이 은근 많아서 예외처리를 하느라 if 문을 많이 쓴 것이 좀 아쉬웠다
- 히든 테스트 케이스 2,3 번과 29,30번이 세트마냥 같이 오류가 나곤 했었는데 if, else if 문을 더 추가해서 예외처리를 해주니 해결되었다
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 문자열 내림차순으로 배치하기 / JavaScript (0) | 2022.01.20 |
---|---|
[Programmers] 시저 암호 / JavaScript (0) | 2022.01.20 |
[Programmers] 나누어 떨어지는 숫자 배열 / JavaScript (0) | 2022.01.20 |
[Programmers] 문자열 내 마음대로 정렬하기 / JavaScript (0) | 2022.01.18 |
[Programmers] 두 정수 사이의 합 / JavaScript (0) | 2022.01.18 |