저장을 습관화
프로그래머스 LV.1 문자열 내 p와 y의 개수 본문
프로그래머스 LV.1 문자열 내 p와 y의 개수
https://school.programmers.co.kr/learn/courses/30/lessons/12916
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 명
문자열 내 p와 y의 개수
2. 문제 설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
3. 제한 사항
- 문자열 s의 길이 : 50 이하의 자연수
- 문자열 s는 알파벳으로만 이루어져 있습니다.
4. 예시
"pPoooyY" | answer |
"Pyy" | true |
w | false |
5. 기본 제공 코드
function solution(s){
var answer = true;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
console.log('Hello Javascript')
return answer;
}
6. 제출한 내 답
const solution = (s) => {
let pCount = 0;
let yCount = 0;
s = s.toLowerCase();
if (s.includes("p") || s.includes("y")) {
for (i = 0; i < s.length; i++) {
if (s[i] === "p") {
pCount += 1;
} else if (s[i] === "y") {
yCount += 1;
}
}
return pCount === yCount ? true : false;
} else {
return true;
}
};
6-2. VSC에 작성한 내용
const solution = (s) => {
let pCount = 0;
let yCount = 0;
s = s.toLowerCase();
if (s.includes("p") || s.includes("y")) {
for (i = 0; i < s.length; i++) {
if (s[i] === "p") {
pCount += 1;
} else if (s[i] === "y") {
yCount += 1;
}
} // 내부 for문 종료
return pCount === yCount ? true : false;
} else {
return true;
}
};
// 테스트
console.log(solution("pPoooyY"));
7. 특이사항
없음
8. 다른 사람이 작성한 답
8-1.
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function numPY(s){
//함수를 완성하세요
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( numPY("pPoooyY") )
console.log( numPY("Pyy") )
8-2. 정규표현식
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function numPY(s){
return s.match(/p/ig).length == s.match(/y/ig).length
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( numPY("pPoooyY") )
console.log( numPY("Pyy") )
8-3.
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;
}
8-4.
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function numPY(s){
var result = true;
s = s.toUpperCase();
var num = 0;
for(var i = 0; i < s.length; i++){
if(s[i] === 'P') num++;
if(s[i] === 'Y') num--;
}
result = (num === 0);
return result;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( numPY("pPoooyY") )
console.log( numPY("Pyy") )
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.1 하샤드 수 (0) | 2023.09.14 |
---|---|
프로그래머스 LV.1 가운데 글자 가져오기 (0) | 2023.09.14 |
프로그래머스 LV.0 문자열안에 문자열 (0) | 2023.09.14 |
프로그래머스 LV.0 모음 제거 (0) | 2023.09.14 |
프로그래머스 LV.0 특정 문자 제거하기 (0) | 2023.09.14 |