일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 프랑크푸르트 공항
- 99클럽
- 항해99
- 독일
- Son Heumg-min
- 손흥민
- 유럽여행
- immigration
- Spurs
- 개발자취업
- Germany
- 소도시
- TIL
- Interview
- sonny
- Totenham
- 20대 여행
- 코딩테스트준비
- 하이델베르크
- airport
- 동유럽
- TomHolland
- 여행
- son
- 숙소
- frankfurtairport
- Trip
- travel
- TotenhamHotspur
- Frankfurt
- Today
- Total
Jeongin_the
99클럽 코테 스터디 3일차 TIL_문자열 내 p와 y의 개수 본문
- 오늘의 학습 키워드
- count()
- if
- 공부한 내용 본인의 언어로 정리하기
S를 전부 대문자로 변환.
특정 문자를 세는 count 함수를 사용.
if 조건문을 사용하여 true 와 false를 출력 할 것.
- 오늘의 회고
1. 어떤 문제가 있었고, 나는 어떤 시도를 했는지
def solution(s):
s_upper = s.upper() # 문자열 s를 모두 대문자로 변환하여 s_upper에 저장
if s_upper.count('P') == s_upper.count('Y'): # s_upper에서 'P'와 'Y'의 개수를 비교
return True # 'P'와 'Y'의 개수가 같으면 True 반환
else:
return False # 'P'와 'Y'의 개수가 다르면 False 반환
2. 어떻게 해결했는지
- 1.
- 2. upper()<->lower()
- 3. 배열의 개수: len()
3. 무엇을 새롭게 알았는지
- True, False 대소문자 주의할 것 ⭐⭐⭐
- if 조건문의 끝은 : 로 마무리 if, elseif, else로 사용.
- upper(): 대문자 출력, lower(): 소문자 출력
- =: 할당 연산자
- ==: 비교 연산자, 흔히 같다 라는 표현을 하고 싶을 때 사용.
* 수정 코드
def solution(s):
return s.upper().count('P') == s.upper().count('Y')
코드를 단축 시킬 수 있는 방법이 있었음.
if 문을 사용하지 않아도 True와 False 반환이 가능한데 부가적인 내용을 너무 넣었음.
if 제외하여 코드를 간결하게 변경함.
대문자로 변경하여야 함으로 upper()사용.
1. 리스트 컴프리헨션과 str.lower()
def solution(s):
s_lower = s.lower() # 모든 문자를 소문자로 변환
return s_lower.count('p') == s_lower.count('y')
s.lower()를 사용하여 입력된 문자열 s를 모두 소문자로 변환.
count() 메서드를 사용하여 'p'와 'y'의 개수를 비교합니다.
2. Counter 클래스 사용
from collections import Counter
def solution(s):
counter = Counter(s.lower()) # 대소문자를 구별하지 않고 문자의 개수를 세는 Counter 객체 생성
return counter['p'] == counter['y']
collections 모듈의 Counter 클래스를 사용하여 대소문자를 구별하지 않고 문자의 개수를 세는 객체를 생성.
p'와 'y'의 개수를 간단히 비교합니다.
- from collections import Counter: 파이썬의 내장 모듈인 collections에서 Counter 클래스를 가져옵니다. Counter 클래스는 컨테이너 안의 동일한 값의 자료가 몇 개인지를 파악하는 도구.
- counter = Counter(s.lower()):
- s.lower(): 입력된 문자열 s를 모두 소문자로 변환합니다. 이는 대소문자를 구별하지 않고 문자열을 처리하기 위함입니다.
- Counter(s.lower()): 소문자로 변환된 문자열을 Counter 클래스의 생성자에 넣어 Counter 객체를 생성합니다. 이 객체는 문자열 내 각 문자의 개수를 카운트합니다.
- return counter['p'] == counter['y']:
- counter['p']: Counter 객체에서 'p'의 개수를 조회합니다.
- counter['y']: Counter 객체에서 'y'의 개수를 조회합니다.
- 이 두 개수를 비교하여 같으면 True, 다르면 False를 반환합니다.
3. filter 함수와 len 함수 사용
def solution(s):
s_lower = s.lower() # 모든 문자를 소문자로 변환
return len(list(filter(lambda x: x == 'p', s_lower))) == len(list(filter(lambda x: x == 'y', s_lower)))
filter() 함수와 람다 함수를 사용하여 문자열 s에서 'p'와 'y'를 각각 필터링하여 리스트로 변환.
리스트의 길이를 비교하여 같은지 확인.
4. 문자열 메서드를 사용한 직접적인 비교
def solution(s):
return s.lower().count('p') == s.lower().count('y')
s.lower()를 사용하여 모든 문자를 소문자로 변환.
count() 메서드를 사용하여 'p'와 'y'의 개수를 직접 비교합니다.
4. 내일 학습할 것은 무엇인지