처음에는 모든 문자열을 하나씩 비교하는 방법을 사용했습니다.
function solution(s){
var answer = true;
var p=0, y=0;
for (var i in s){
if(s[i]=='p'){
p++;
}
if(s[i]=='y'){
y++;
}
}
if(p!==y){answer = false;}
return answer;
}
그런데 테스트 케이스를 많이 통과하지 못해서.....
문자열 탐색에 사용할 수 있는 자바스크립트 함수가 있는지 찾아보았습니다!
그래서 찾은 함수는 match!!!!!!!
var res = 전체문자열.match(/찾을문자열/g);
을 이용하면 문자열에서 탐색을 할 수 있습니다.
뒤에 g를 붙여줘야 전체 문자열에서 탐색을하는거구요, g를 붙이지 않으면 문자열을 한번찾고 끝!이게 됩니다.
그러니까,
var res = 'Hello everyone'.match(/e/g);
를 하게되면, res = ['e','e','e'] 가 되는데
var res = 'Hello everyone'.match(/e/); 를 하게되면
res = ['e', index: 1, input: "Hello everyone, groups: undefined] 이런식으로 나옵니다....
그래서 개수를 세고 싶거나 전체 문자열에서 몇개있는지알고 싶으면 위에 g를 함께 쓰는 방법을 써야해요!
그럼이제 코드를 고쳐봅시다...!
function solution(s){
var answer = true;
s = s.toLowerCase();
var p = s.match(/p/g);
var y = s.match(/y/g);
if(p===null){p=[];}
if(y===null){y=[];}
if(p.length!=y.length){answer = false;}
return answer;
}
먼저, 문자열을 받아와서 전부 소문자로 바꿔줍니다. (처음에 이걸 안해서 계속 실패했었습니다...ㅠㅠ)
그리구, 각각 p,y와 얼마나 match하는지 match함수를 써주었구요,
아무것도 match하지않을 때는 null값으로 반환되기 때문에 if문을 써서 빈 배열로 다시 바꾸어주었습니다.
그 후, if 문을 이용해서 길이가 다를 때는 answer을 false 값으로 바꾸어 주었습니다!
프로그래머스 Level1 - 두 정수 사이의 합 (JavaScript) (0) | 2020.05.10 |
---|---|
프로그래머스 Level1 - 같은 숫자는 싫어 (JavaScript) (0) | 2020.05.10 |
프로그래머스 Level1 - 서울에서 김서방 찾기 (JavaScript) (0) | 2020.05.10 |
프로그래머스 Level1 - 평균 구하기 (JavaScript) (0) | 2020.05.09 |
프로그래머스 Level1 - 모의고사 (JavaScript) (0) | 2020.05.09 |