Jeongin_the

99클럽 코테 스터디 3일차 TIL_문자열 내 p와 y의 개수 본문

카테고리 없음

99클럽 코테 스터디 3일차 TIL_문자열 내 p와 y의 개수

serendipity_128 2024. 7. 24. 23:31
반응형
SMALL

- 오늘의 학습 키워드

 - 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.  내일 학습할 것은 무엇인지

반응형
LIST