[프로그래머스][LV.1] 문자열 내 p와 y의 개수 | python3
2025. 1. 15. 19:30ㆍ프로그래머스/LV.1
문제 링크: 문자열 내 p와 y의 개수
문제 설명
문제 설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
제한사항
- 문자열 s의 길이 : 50 이하의 자연수
- 문자열 s는 알파벳으로만 이루어져 있습니다
문제 풀이
대문자와 소문자를 하나로 통일해서 갯수를 세면 더 시간이 덜 걸릴 것 같아서 소문자로 변환 후에 count() 함수를 사용했다.
내코드
def solution(s):
return s.lower().count('p') == s.lower().count('y')
더보기
다른사람풀이
from collections import Counter
def numPY(s):
# 함수를 완성하세요
c = Counter(s.lower())
return c['y'] == c['p']
- 해시로 시간을 O(1)로 만들었다고 함.
♣ counter 함수
- 파이썬의 collections 모듈에서 제공하는 클래스
- 주어진 데이터에서 요소의 개수를 손쉽게 셀 수 있는 자료구조로, 딕셔너리(dictionary)와 비슷한 방식으로 작동
- Counter(인자값)
주요 특징
요소의 빈도 계산:
입력된 반복 가능한 객체(문자열, 리스트 등)에서 각 요소가 몇 번 등장했는지 계산합니다.
딕셔너리 형태로 결과 반환:
각 요소를 키(key), 등장 횟수를 값(value)으로 가지는 딕셔너리를 반환합니다.
- 내부적으로 해시 테이블을 사용한다.
해시 테이블이란?
- 해시 테이블은 데이터를 키-값 형태로 저장하는 자료구조입니다.
- 각 키는 해시 함수를 통해 고유한 메모리 주소(버킷)에 매핑됩니다.
- 키를 이용한 값 조회, 삽입, 삭제는 **평균적으로 O(1)**의 시간이 걸립니다.
'프로그래머스 > LV.1' 카테고리의 다른 글
[프로그래머스][LV.1] 두 정수 사이의 합 | python3 (0) | 2025.01.16 |
---|---|
[프로그래머스][LV.1] 나누어 떨어지는 숫자 배열 | python3 (0) | 2025.01.16 |
[프로그래머스][LV.1] 나머지가 1이 되는 수 찾기 | python3 (0) | 2025.01.15 |
[프로그래머스][LV.1] x만큼 간격이 있는 n개의 숫자 | python3 (0) | 2025.01.15 |
[프로그래머스][LV.1] 평균 구하기 | python3 (0) | 2025.01.15 |