[Javascript] 프로그래머스 Level1 _ 문자열 내 p와 y의 개수
👇🏻
👇🏻
시행착오
( + 코드를 작성하면서든 생각들.)
1.
첫번째 시도는 무난하게 pCount 와 yCount 를 선언하고
map으로 배열 s를 돌면서 p,P 나 y,Y가 있을 경우 카운팅을 한 후 카운트 값이 같은지로 true / false를 리턴했다.
function solution(s){
var pCount = 0;
var yCount = 0;
s = s.split('');
s.map((el) => { if(el == 'p' || el == 'P')
pCount += 1;
else if(el == 'y' || el == 'Y')
yCount += 1; });
return pCount == yCount;
}
2.
대, 소문자를 구분해서 확인하는 게 번거로워 1차적으로 문자를 모두 대문자로 변환하였다.
function solution(s){
var pCount = 0;
var yCount = 0;
s = s.toUpperCase().split('');
s.map((el) => { if(el == 'P')
pCount += 1;
else if(el == 'Y')
yCount += 1; });
return pCount == yCount;
}
3.
다른 사람의 풀이를 확인하다가 아래와 같이 대문자로 변환한 s를 P의 배열과 Y의 배열로 나누어 길이가 같은지를 반환하는 코드가 있었다.
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
조금 변경해서 아래와 같이 적었더니 통과가 되었다.
function solution(s){
s = s.toUpperCase();
return (s.split('P').length == s.split('Y').length)
}
근데 이게 어떻게 가능한 건지 이해가 안되어서 리턴해봤다.
return s.toUpperCase().split("P"); | length = 3 | ["", "", "OOOYY"] |
return s.toUpperCase().split("Y"); | length = 2 | ["P", "", ""] |
P를 기준으로 끊으면 p의 개수 + 1 길이의 배열이 만들어지고
Y를 기준으로 끊이면 y의 개수 +1 길이의 배열이 만들어진다.
다른 테스트 케이스를 추가해봤는데도 모두 잘 나왔다!
여기에 이런 패턴이 있을 거라고는 생각 못했는데 신기했다... split은 이렇게 쓰는 거구나 싶었다.
⚠️ 아래 내용은 모두 개인적인 참고 / 기록을 위한 용도입니다. 참고해주시고 편안하게 봐주세요 :) ⚠️
*** 혹시라도 잘못된 정보가 있다면 언제든지 알려주시면 감사하겠습니다 ! ***
'Programmers > Level 1' 카테고리의 다른 글
[Javascript] 프로그래머스 : 문자열 내림차순으로 배치하기 (0) | 2021.07.04 |
---|---|
[Javascript] 프로그래머스 : K번째수 (0) | 2021.07.04 |
[Javascript] 프로그래머스 : 문자열을 정수로 바꾸기 (0) | 2021.07.03 |
[Javascript] 프로그래머스 : 문자열 다루기 기본 (0) | 2021.07.03 |
[Javascript] 프로그래머스 : 자연수 뒤집어 배열로 만들기 (0) | 2021.07.03 |