본문 바로가기
Developer/Algorithm

Programmers 프로그래머스 코딩테스트 연습 - 문자열 내 p와 y의 개수 (JavaScript)

by roqkfrlfhr 2020. 8. 12.

Programmers 프로그래머스 코딩테스트 연습 - 문자열 내 p와 y의 개수 (JavaScript)

 

Programmers(프로그래머스)의 코딩테스트 연습문제 Level 1 중,

문자열 내 p와 y의 개수 문제를 JavaScript로 해결 해보도록 하겠습니다.

 

 

문제 설명

대문자와 소문자가 섞여있는 문자열 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

 

입출력 예 설명

입출력 예 #1
'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.

입출력 예 #2
'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.

 

 

작성한 답

solution.js

function solution(s) {
    return (s.match(/p/ig)||[]).length == (s.match(/y/ig)||[]).length;
}

 

설명

대문자와 소문자가 섞여있는 문자열 s에서 대문자와 소문자는 구별하지 않고 'p'의 개수와 'y'의 개수를 비교해 개수가 같거나 'p', 'y' 모두 하나도 없는 경우 True, 'p'의 개수와 'y'의 개수가 다르면 False를 반환하는 문제입니다.

JavaScript의 정규표현식에 맞는 문자열을 찾아서 배열 객체로 반환해주는 string의 match 함수와 정규식을 사용하면 아주 간단하게 해결할 수 있습니다.

Parameter로 들어오는 대문자와 소문자가 섞여있는 문자열 s를 정규식으로 'p'를 대문자와 소문자를 구별하지않고 배열 객체로 반환해주기위해 정규식 /p/ig를 사용하여 match 함수를 사용해주시고, match 함수를 사용할 때 정규표현식에 맞는 문자열이 없다면 null을 반환하기 때문에 || [] 를 함께 사용해 match 함수 사용에서 null을 반환할 때는 빈 배열을 반환할 수 있도록 해주시고 그에대한 길이를 구합니다. 여기서 나타나는 길이가 문자열 s에서 대문자와 수문자를 구별하지 않은 'p'의 갯수입니다.

마찬가지로 'y'로 똑같이해주고 두 길이를 비교하여 True 혹은 False 를 최종 반환합니다.

(너무도 막연한 설명 죄송합니다.. 잘 이해가 안되신다면 언제든지 댓글로 남겨주세요.)

 

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!

 

감사합니다.


댓글