1차시도
처음에 뭔가 문자열이 알파벳이 따로 들어가 있는 게 아니라, 단어 형식으로 들어가있는 것이라고 생각해서 문자열을 잘라서 해봐야겠다는 생각이 들었다. 하지만 우리가 배운 내용에는 없었기에 따로 찾아봤다.
split 함수를 사용하여 문자열을 배열로 변환 후 배열의 크기에서 -1을 하면 특정 문자의 개수를 구할 수 있다. 라는 말이 있어, 1차에는 split함수를 사용했고, 테스트까지만 해도 잘 나왔기에 통과할 줄 알았다.
그러나 정답률이 60%밖에 되지 않았고 테스트에서는 문제점을 발견하기 힘들었기에 테스트 케이스를 추가했다.
문자열이 어느정도의 길이를 넘어가면 오류가 발생하는 것 같았다.
그래서 다른 방법을 시도하기 위해 질문들을 참고하였다.
+) 나중에 보니 테스트 3번은 관계가 없었다...;; 2차시도에서도 오류가 났는데 제출 후 채점을 해보니 통과했다...
2차시도
function solution(s){
var answer = true;
let p = 0;
let y = 0;
for (i = 0; i < s.length; i++){
if (s[i] === "p"|| s[i] === "P"){
p+=1;
}
else if (s[i] === "y"|| s[i] === "Y"){
y+=1;
}
}
if (p===y){
return true;
}
else{
return false;
}
}
내 코드는 너무 길었다. 줄여도 이정도
function solution(s){
var answer = 0;
for (i = 0; i < s.length; i++){
if (s[i] === "p"|| s[i] === "P") {
answer+=1;
}
else if (s[i] === "y"|| s[i] === "Y") {
answer-=1;
}
}
return answer === 0;
}
다른 방법도 찾아보니 match라는 함수가 있었다. 세상엔 너무 많은 문법들이 있었다...;; 언제 다 외우지
3차시도
function solution(s){
return s.match(/p/ig).length === s.match(/y/ig).length;
}
ㅋㅋㅋㅋㅋㅋㅋ아 충격적,,,,, 10줄코드를 단 3줄로 간결하게 줄이다니... 처음에 if else를 안 넣어도 괜찮은가 생각했는데, return에서 ===을 넣음으로써 자동으로 true false를 출력할 수 있게 만든 것이었다.
match 함수는 해당 문자열.match('찾을 단어') 이런 형식으로 사용하며
match 함수를 사용하면 특정 문자를 추출하여 배열로 반환한다.
특정 문자가 없을 경우 빈 배열을 반환하는데 이럴 경우 filter 함수를 사용하여 빈 배열을 제거해야 0을 얻을 수 있다.
filter 함수를 사용하지 않을경우 특정 문자를 찾지 못하면 빈배열 1개를 반환하기 때문에 1을 반환한다.
라고 한다.
[참조 링크]
[JavaScript] 문자열에서 특정 문자 개수 구하는 2가지 방법
자바스크립트에서 문자열에 포함된 특정 문자의 개수를 구해야 하는 경우가 있다. 특정 문자를 구하는 직접적인 함수는 없으며 split 함수와 match 함수를 활용하여 특정 문자의 개수를 구할 수 있
gent.tistory.com
[자바스크립트] 동일한 단어를 문자열에서 찾기, match() 함수
자바스크립트의 match() 함수에 대하여 알아보려합니다. match() 함수는 특정 텍스트 안에 검색할 단어, 찾고 싶은 단어가 있는경우 해당 텍스트가 문구에 포함되어 있는지 확인할 수 있습니다
webisfree.com
'캠프 > javascript 문법 종합반' 카테고리의 다른 글
JS 문법 종합반 2주차 코테-1 (0) | 2024.07.25 |
---|---|
JS 문법 종합반 2주차 (0) | 2024.07.25 |
JS 문법 종합반 1주차 (수정2차,,,,,1차본 날아감,,,,,,,,) (0) | 2024.07.22 |