crystal_dev
Crystal 개발 일지
crystal_dev
전체 방문자
오늘
어제
  • 분류 전체보기 (58)
    • Web (0)
    • Frontend (32)
      • React (0)
      • Javascript (17)
      • HTML & CSS (14)
      • DOM API (0)
    • 사이드프로젝트 (1)
      • Flask (1)
    • CS (0)
      • Network (0)
    • 형상관리 & 개발도구 (2)
      • git (1)
      • VSCode (1)
    • 알고리즘 (19)
      • 백준 알고리즘 (1)
      • 프로그래머스 (17)
      • 기타 (1)
    • Error (2)
      • javscript (1)
      • python (1)
    • blog (2)
      • daily (1)
      • 회고 (0)
      • it참고 (0)
      • 항해99 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • js
  • frontend
  • js 기본
  • userfont
  • 프로그래머스
  • 풀이
  • 알고리즘
  • 느슨한타입
  • 자바스크립트
  • Algorithm
  • let
  • css정렬
  • javascript error
  • 프론트엔드
  • Programmers
  • css위치
  • js기본
  • Javascript
  • CSS
  • match()

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
crystal_dev
알고리즘/프로그래머스

[lv.1] 문자열 내 p와 y의 개수

[lv.1] 문자열 내 p와 y의 개수
알고리즘/프로그래머스

[lv.1] 문자열 내 p와 y의 개수

2022. 5. 27. 15:33
728x90
반응형

 

 

문제 설명

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

 

 

내 풀이 

function solution(s){
    let answer = true;
    s = s.toLowerCase();
    let p = 0, y = 0;
    for(let i = 0; i < s.length; i++){
        if(s[i] === 'p') p++;
        if(s[i] === 'y') y++;
    }
    if(p !== y) answer = false;
    return answer;
}

 

 

다른 사람 풀이 1

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);
  }

reduce를 이용한 풀이

 

다른 사람 풀이 2

function numPY(s) {
    return s.match(/p/ig).length == s.match(/y/ig).length;
  }

match() 메서드를 이용한 풀이다. match() 메서드는 문자열이 정규식과 매치되는 부분을 검색한다. 

정규식 '/p/ig',   '/y/ig' 는 p와 y문자에 대하여 '글로벌(g)' 및 '대/소문자 무시(i)' 플래그이다.  

 

 

match

str.match(regexp)

매개변수는 regexp  정규식 개체이다. 결과 값으로는 문자열이 정규식과 일치하면, 일치하는 전체 문자열을 첫번째 요소로 포함하는 배열을 반환한다. 일치하는 것이 없으면 null이 반환된다.

 

 

👀 참고

메서드 참고
toUpperCase()  https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase
toLowerCase() https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase
match() https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/match

 

 

 

 

 

 

 

728x90
반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[lv.1] 문자열 다루기 기본  (0) 2022.05.27
[lv.1] 내적  (0) 2022.05.27
[lv.1] 나누어 떨어지는 숫자 배열  (0) 2022.05.24
[lv.1] 2016년  (0) 2022.05.24
[lv.1] 부족한 금액 계산하기  (0) 2022.05.17
  •  
  •  
  • 문제 설명
  •  
  • 제한 사항
  •  
  • 입출력 예
  •  
  • 입출력 예 설명
  • 내 풀이 
  • 다른 사람 풀이 1
  • 다른 사람 풀이 2
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [lv.1] 문자열 다루기 기본
  • [lv.1] 내적
  • [lv.1] 나누어 떨어지는 숫자 배열
  • [lv.1] 2016년
crystal_dev
crystal_dev
어제보다 더 나은 오늘의 내가 되자 ✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.