[프로그래머스] Lv1_문자열 내 p와 y의 개수

박선영·2023년 10월 6일
0
post-thumbnail

Lv1_문자열 내 p와 y의 개수

* 영문 문제를 번역하였습니다.

📄Description

소문자와 대문자를 포함해 구성되는 문자열 s가 매개변수로 주어진다. 문자열 'p'와 'y'의 개수가 동일하다면 True를 동일하지 않다면 False를 return하도록 solution 함수를 완성해주세요. 'p'와 'y'가 모두 없다면 항상 True를 return한다. 또한, 'p'와 'y'의 대소문자는 구분하지 않는다.

제한 조건

  • 1 ≤ s의 길이 ≤ 50
  • 문자열 s는 문자로만 구성된다.

입출력 예시

sanswer
"pPoooyY"true
"Pyy"false

입출력 예 설명

  1. 'p'와 'y'의 개수가 2로 동일하므로, true를 return합니다.
  2. 'p'는 1개, 'y'는 2개로 동일하지 않으므로, flase를 return합니다.

🤔생각 정리

  1. 문자열의 대소문자가 구분이 안되니까 하나로 통일해주고 개수를 세야겠네
  2. boolean값으로 return하니까 조건을 그냥 return하면 되겠네

💡Pseudo Code💡

1. s 소문자화하기
2. return p의 문자 개수 == y의 문자 개수

🖥️코드화

def solution(s):
    s = s.lower()
    return s.count('p') == s.count('y')

📌코드 비교 및 감상

  1. collectionsCounter 클래스
    collections 모듈의 Counter 클래스를 사용해 문자열의 모든 개수를 dictionary로 생성하여 시간복잡도를 O(1)로 해결할 수 있다.
    (문자열 내 문자의 개수 계산이 필요할 때 사용하기 좋은 방법인것 같다. 하나 배워간다...👍)
    코드를 인용하자면 이렇다.
from collections import Counter

def solution(s):
    c = Counter(s.lower())
    return c['y'] == c['p'] 
profile
데이터를 만지는 사람

0개의 댓글