https://programmers.co.kr/learn/courses/30/lessons/12916
문제
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
제한 사항
- 문자열 s의 길이 : 50 이하의 자연수
- 문자열 s는 알파벳으로만 이루어져 있습니다.
결괏값 예시
s | answer |
"pPoooyY" | true |
"Pyy" | false |
기본 제공 틀
function solution(s){
var answer = true;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
console.log('Hello Javascript')
return answer;
}
풀이 [JavaScript]
처음 로직을 짰을 때에는 match함수를 이용하여 들어온 문자열 s에 정규식을 사용하여 대소문자 상관없이 p와 y가 있는 는 array 를 생성하고 만약 둘다 null값이 아니라면 둘의 길이를 비교하여 갯수가 같으면 answer에 true를 대입해주고 둘의 값 중 하나라도 null값이 있다면 값을 false로 대입해주었다.
그리고 기본 값은 true로 설정해주었는데, 둘다 없는 경우에는 무조건 true이기 때문에 디폴트 값을 true로 설정하였다.
function solution(s){
var answer = true;
var pArray = s.match(/p/gi);;
var yArray = s.match(/y/gi);
if(pArray !== null && yArray !== null){
answer = pArray.length === yArray.length;
}else if(pArray === null || yArray === null){
answer = false;
}
return answer;
}
이후에 새로 짠 방법이다.
우선 들어온 문자열을 모두 소문자로 바꾸어 주고, split함수를 사용하여 p와 y를 기준으로 split을 해주면, 해당 문자열에 p와 y의 갯수만큼 문자열이 나뉘게되므로, 둘의 값이 같을 경우에는 true를 반환해주는 방식으로 로직을 구현하였다.
function solution(s){
var lowerS = s.toLowerCase();
return lowerS.split('p').length === lowerS.split('y').length;
}
채점 결과 [JavaScript]
'알고리즘 스터디 > 프로그래머스 스킬체크 레벨 1(끝)' 카테고리의 다른 글
[프로그래머스 스킬체크 레벨 1] 문자열 내림차순으로 배치하기 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.14 |
---|---|
[프로그래머스 스킬체크 레벨 1] 문자열을 정수로 바꾸기 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.14 |
[프로그래머스 스킬체크 레벨 1] 자연수 뒤집어 배열로 만들기 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.13 |
[프로그래머스 스킬체크 레벨 1] 서울에서 김서방 찾기 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.13 |
[프로그래머스 스킬체크 레벨 1] 자릿수 더하기 풀이 및 설명 - 자바스크립트[JavaScript] (0) | 2021.07.13 |
댓글