프로그래머스 코딩테스트 연습 <문자열 내 p와 y의 개수>
🔎 <문자열 내 p와 y의 개수>
📝 답안
코딩테스트 연습을 이제 막 시작해 부끄러운 수준의 내 답안과 다른 사람들의 답안을 확인해보자.
🚩 제출한 답안
function solution(s) {
var answer = true;
if (s.match(/p/gi).length !== s.match(/y/gi).length) {
answer = false;
}
return answer;
}
match()
와 정규표현식을 활용해서 문자열에서 정규표현식이 일치하는 부분을 검색하여 해결하고자 했으나, 테스트 과정에서 런타임 에러가 발생했다. 추측하기로는 정규표현식으로 문자열을 검색하는 과정이 오래 걸리기 때문이라고 생각된다.
또한, match()
에 의해 문자열을 검색할 때, p
, y
가 존재하지 않는 경우 null
이 반환되어 에러가 발생하는 것으로 생각된다.
주요 활용 문법
match()
, 정규표현식
🚩 다른 사람 답안
includes()
을 활용한 답안
function solution(s){
var answer = true;
var pCount = 0;
var yCount = 0;
for (let i = 0; i < s.length; i++) {
if (s.toLowerCase()[i].includes("p")) {
pCount++;
}
}
for (let j = 0; j < s.length; j++) {
if (s.toLowerCase()[j].includes("y")) {
yCount++;
}
}
if (pCount !== yCount) {
answer = false;
}
return answer;
}
includes()
와 for
반복문를 활용해 해당 문자가 포함되었는지를 검색할 수 있다. 다만 이경우 대소문자를 구분하기 때문에 toLowerCase()
혹은 toUpperCase()
를 활용해 하나로 통일해주어야 한다.
split()
을 활용한 답안
function solution(s){
// 함수를 완성하세요
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
// 해당 문자를 기준으로 나누면, ["", "", "OOOYY"], ["PPOOO", "", ""] 로 구분된다.
}
split()
을 활용해 해당 문자를 분리해 배열로 반환한 후 해당 배열의 길이를 통해 검색할 수 있다. 다만, 이 또한 대소문자를 구분하기 때문에 toLowerCase()
혹은 toUpperCase()
를 활용해 하나로 통일해주어야 한다.
📌 공부할 점
split()
split()
split(separator)
메서드를 통해 String
객체를 지정한 separator
를 이용하여 여러 개의 문자열로 나눌 수 있다. 이때 구분자를 ""
로 지정하는 경우 문자 하나씩 나눠진다.
includes()
includes(valueToFind[, fromIndex])
메서드로 배열이 특정 요소를 포함하고 있는지 판별할 수 있다. fromIndex
가 배열의 길이를 초과하는 경우에는 false
가 반환된다.
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
['a', 'b', 'c'].includes('c', 3); // false
['a', 'b', 'c'].includes('c', 100); // false
match()
match()
메서드는 문자열이 정규식과 매치되는 부분을 검색한다.
Author And Source
이 문제에 관하여(프로그래머스 코딩테스트 연습 <문자열 내 p와 y의 개수>), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mini_vanta/프로그래머스-코딩테스트-연습-문자열-내-p와-y의-개수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)