#연습문제
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12916
풀이
- 문자열 s에서 문자 p의 개수와 s의 개수를 구해 비교한 뒤, 같으면 True 다르면 False를 return한다
- 이때 대소문자 구별이 없으므로 우선 받아온 문자열을 lower() 메소드를 이용해 소문자 처리한다.
- count() 메소드를 이용해 문자열에서 p, y의 개수를 비교해 if문의 조건으로 넣어 주었다.
코드
def solution(s):
return True if s.lower().count('p') == s.lower().count('y') else False
한 줄코드 잘 사용하는 중...
문자열 안 문자를 1개씩 for문으로 비교하자니 너무 비효율적이여서 간단히 처리할 방법을 생각하다가
count 메소드를 문자열에도 사용 가능함을 알게되었다!
(당연함 문자열도 리스트 종류니까)
다른 풀이
- Counter라이브러리의 Counter()함수가 count()메소드와 동일한 역할을 한다.
- 자세히 말하자면, string에 등장하는 각 문자값이 key로, 해당 개수가 value로 들어가는 dictionary가 생성되는 듯 하다.
from collections import Counter
...
c = Counter(s.lower())
- 내가 짠 코드는 사실 if문이 필요가 없었다...!!! return값 자체로 비교 연산자를 이용해 True, False를 반환 가능했다!
- 아직 멀었구만...
return s.lower().count('p') == s.lower().count('y')
#이러면 같을 경우 자연스럽게 True가 return된다.
+
1. Counter()
- collections 모듈의 Counter 클래스 - 데이터의 개수를 셀 때 유용
- dictionary를 이용한 카운팅
- ' ', 즉 blank까지 count해준다.
- 문장에서 최다 등장 알파벳과 그 개수를 구하는데도 용이
#최다 등장 알파벳, 그 개수 구하기
from collections import Counter
def get_max(s):
c = Counter(s)
max_c = -1
for char in c:
if c[char] > max_c:
max_c = c[char]
max_character = char
return max_character, max_c
- most_common : 데이터의 개수 기준으로 내림차순 정렬된 배열 리턴
Counter(s).most_common(1) #== get_max(s)와 동일
'Algorithm > Programmars' 카테고리의 다른 글
[Python/Level.1] 두 정수 사이의 합 (0) | 2022.07.26 |
---|---|
[Python/Level.1] 2016년 (0) | 2022.07.20 |
[Python/Level.1] 약수의 개수와 덧셈 (0) | 2022.07.12 |
[Python/Level.1] 음양 더하기 (0) | 2022.07.09 |
[Python/Level.1] 모의고사 (0) | 2022.07.09 |