[Python] 프로그래머스_문자열 내 p와 y의 개수 (count와 counter)

세 연·2024년 7월 24일

Algorithm

목록 보기
3/11
post-thumbnail

오늘의 문제...

📍 문자열 내 p와 y의 개수

문제 보러가기

Q. 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요.

'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.


풀이

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

시도한 것

  • a.lower() : a를 모두 소문자로 바꾸는 함수 ( <-> a.upper() )
  • a.count('b') : a에 들어 있는 b의 개수를 세는 함수

참고할 만한 다른 풀이

다른 풀이_1

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

새롭게 알게 된 것

  • 두 함수를 코드 한 줄에 합쳐서 작성 가능

다른 풀이_2

from collections import Counter

def numPY(s): 
	c = Counter(s.lower())
    return c['y'] == c['p'] 

새롭게 알게 된 것

  • Counter 함수의 쓰임에 대해 알게 되었다.

추가로 공부한 것

Counter 함수는 초면이라서 사용법과 예제를 찾아서 정리해 보았다.

Counter

  • collections 모듈에서 제공되는 클래스
  • 별도 패키지 설치 없이 다음과 같이 임포트해서 사용 가능
from collections import Counter
  • 다양한 형태의 데이터를 인자로 받아, 해당 데이터 내에 들어 있는 원소가 각각 몇 번씩 나오는지 개수를 세주는 함수
  • 해당 원소를 key값으로 갖고, 원소가 등장하는 횟수를 value값으로 가지는 객체를 반환
# Counter(list) - 배열을 인자로 받는 경우

Counter(['a', 'b', 'c', 'c', 'a', 'd', 'a'])
>>> Counter({'a': 3,'b': 1,'c': 2,'d': 1})
# Counter(문자열) - 문자열을 인자로 받는 경우

Counter("hello world")
>>> Counter({"h": 1, "e": 1, "l": 3, "o": 2, " ": 1, "w": 1, "r": 1, "d": 1}) #공백도 집계 가능

파이썬은 유용한 내장 함수가 정말 많은 것 같다 🫢


profile
XP in Progress: My Dev Inventory

0개의 댓글