항해 프로그래머스
항해3주차 자바스크립트 프로그래머스 - 문자열 내 p와 y의 개수
완두노예
2023. 1. 30. 14:06
처음 풀이
function solution(s){
var answer = 0;
let p = 0;
let y = 0;
for(let i=0, i < s.length;, i++)
if (p === y) {return = true};
else if (p != y) {return = false};
else {return = true};
return answer;
}
//for문 돌리기
//p=y true
//s의 p,y를 뭐라표현하더라
//!= false
// else = true
//삼항연산자를 이럴때 쓰던가
수정 풀이
function solution(s){
var p = 0;
var y = 0;
var str = s.toUpperCase();
var answer = true;
for(var i = 0; i<str.length; i++) {
if(str[i] === 'P') p++;
else if(str[i] === 'Y') y++;
}
(p == y) ? answer = true : answer = false;
return answer;
}
다른 풀이
function solution(s){
var answer = true;
// s의 모든 영문을 소문자로 바꿔준다(같은 것을 찾을 때 확실히 하기위해서)
let str = s.toLowerCase();
// 소문자로 바꾼 s의 문자열들을 배열로 하나씩 나눠준다.
str = [...str];
// 먼저 변수 p,y 에 값을 0으로 선언해준다.
let p = 0;
let y = 0;
// for문으로 i를 str의 총 배열 갯수만큼 증가시키고 str[i]의 값과 "p" 가 일치할 때마다 p를 증가, 같은 방법으로 y와도 일치할 시 y도 증가시켜준다.
for(let i=0; i<str.length; i++){
if(str[i] == 'p'){
p++;
} else if (str[i] == 'y'){
y++;
}
}
// 그렇게 증가시켜준 값이 들어간 p 와 y 의 수가 같으면 answer에 true를 대입
if(p == y){
answer = true;
// 그게 아니면 answer에 false를 대입해준다.
} else {
answer = false;
}
return answer;
}
function solution(s){
return [...s.toLowerCase()].reduce((acc, cur) => {
if(cur ==='p') return acc + 1;
else if(cur ==='y') return acc - 1;
return acc;
}, 0) ? false : true;
}
function numPY(s){
let pLength = s.match(new RegExp("p", "ig")).length,
yLength = s.match(new RegExp("y", "ig")).length;
if( pLength === yLength ){
return true;
} else {
return false;
}
}