-
안녕하세요. 오늘은 자바스크립트 알고리즘 문자열 내 p와 y의 개수 를 풀어보았습니다.
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 pPoooyY면 true를 return하고 Pyy라면 false를 return합니다.
제한 사항
- 문자열 s의 길이 : 50 이하의 자연수
- 문자열 s는 알파벳으로만 이루어져 있습니다.
입출력 예
문제 풀이
function solution(s){ let p = 0; let y = 0; for ( let i = 0; i < s.length; i++ ){ if ( s[i] == 'p' || s[i] == 'P'){ p++; } else if ( s[i] == 'y' || s[i] == 'Y'){ y++; } }; return p == y; }; // 아래는 테스트 코드입니다. console.log(solution("PopoPopoYoyoYoy")); console.log(solution("PopoPopoYoyoYo"));
저의 풀이입니다.
우선 변수 p 와 y 는 0으로 만들어주고 for 반복문을 사용하여 s.length 만큼 반복해 줍니다.
만약 s[i] 의 값이 'p' 또는 'P' 라면 변수 p에 1씩 더해주고
만약 s[i] 의 값이 'y' 또는 'Y' 라면 변수 y에 1씩 더해줍니다.
이로서 p와 y 가 같다면 true를 리턴하게 되고 다르다면 false를 리턴하게 됩니다.
p와 y 가 하나도 없는 경우에도 변수 p와 y 에 값이 0으로 똑같기 때문에 문제에서 요구하는 바와 같이 true 를
리턴하게 됩니다.
마지막으로 다른사람들의 풀이를 보면서 글 마치겠습니다.
다른 사람들의 풀이
function solution(s){ const sArr = s.split(''); const {p, y} = sArr.reduce((acc, c) => { if (c.toLowerCase() === 'p') acc.p += 1; else if (c.toLowerCase() === 'y') acc.y += 1; return acc; }, {p: 0, y: 0}); return (p === y); }
'코딩 기록 > 자바스크립트 알고리즘' 카테고리의 다른 글
(자바스크립트 알고리즘) 완주하지 못한 선수 - kimyang-sun (0) 2020.01.27 (자바스크립트 알고리즘) 나누어 떨어지는 숫자 배열 - kimyang-sun (0) 2020.01.27 (자바스크립트 알고리즘) 자연수 뒤집어 배열로 만들기 - kimyang-sun (0) 2020.01.26 (자바스크립트 알고리즘) 문자열 다루기 기본 - kimyang-sun (0) 2019.12.21 (자바스크립트 알고리즘) 서울에서 김서방 찾기 - kimyang-sun (0) 2019.12.18 댓글