function solution(s){
let answer = true;
let arr = s.split("");
let strP = arr.filter(function(item) {
return item === "p" || item === "P";
});
let strY = arr.filter(function(item) {
return item === "y" || item === "Y";
});
if (strY.length === strP.length || strY.length === 0 && strP.length === 0) {
return answer;
} else {
return !answer;
}
}
1주차때 배운내용을 활용해서 문제를 풀었다. filter 기능으로 p와 P, y와 Y를 찾아 변수에 담아주고 두개가 트루면 ture라는 불린값을 리턴해준다.
대소문자를 구분하지 않고 toUpperCase() 메서드를 활용해서 더 간단하게 풀 수도 있다.
function solution(absolutes, signs) {
let answer = 0;
for (let i = 0; i < signs.length; i++) {
// 1. absolutes의 i번째 값이 +인지 -인지 판별(signs[i])
if (signs[i] === true) {
// +란 얘기
answer += absolutes[i];
} else {
// -란 얘기
answer -= absolutes[i];
}
}
return answer;
}
문제는 두 배열을 비교해서 signs에 들은 값이 false가 들으면 absolutes 배열에 들은 숫자값이 음수이고 true면 양수인데 for문을 돌려서 signs[i]요소가 true라면 조건을 줘서 answer라는 배열에다가 더하기 연산을 해주고 아니면 마이너스 연산을 해줬다.
두 값을 비교할때 배열안에 들은 요소값을 가지고 활용하는법을 알게됐고 더 나아가
signs[i] ? answer += absolutes[i] : answer -= absolutes[i]
signs에 들은 배열은 불린값이라는 걸 이용해 삼항연산자를 써서 표현할 수 있는 것도 문제풀이를 통해 배우게 되었다.
배운걸 최대한 활용하면서 한단계씩 풀어나가니까 응용력도 길러지고 더 기억에 오래남아서 좋았다.