99클럽 코테 스터디 1일차 TIL + 문자열, lower()

임정민·2025년 1월 13일
0
post-thumbnail

1. 문제 설명

[문제 내용]

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

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

[제한 사항]

문자열 s의 길이는 50이하의 자연수이며, 문자열 s는 알파벳으로만 이루어져 있습니다.

[입출력 예]

sanswer설명
"pPoooyY"true'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.
"Pyy"false'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.

2. 풀이

def solution(s):
    
    s = s.lower() # 대소문자 신경쓰지 않으니 통일하기
    
    num_p = 0
    num_y = 0
    
    for char in s:
        
        if char == 'p':
            num_p += 1
            
        elif char == 'y':
            num_y += 1

    return num_p == num_y

3. 회고

3-1. 문제 해결 과정

입력 받은 문자를 리스트에 넣어서, 인덱스를 이용하여 자리 비교를 통해 구할 수 있겠다는 생각이 들었다. p와 y의 개수를 저장하는 변수를 선언하고 for 문과 if 절을 같이 이용해서 작성했는데 굳이 이렇게 작성해야하나 싶었다.

중요한 부분은 개수를 비교할 때 대소구분 X라는 것이다. 결국 나는 lower을 통해 알파벳의 대소문자를 통일해서 p와 y를 구하고자 했다. 그렇게 하니까 코드 길이가 확실히 줄어들었다.

3-2. 새롭게 배운 내용

  • 함수 인자로 s를 받고 있으니까 따로 input()을 사용할 필요가 없다.

  • Python에서는 else if가 아니라 elif다. (다른 언어랑 헷갈리지 말자!)

  • Python에서는 ++ 연산자를 지원하지 않는다. (역시 다른 언어랑 헷갈리지 말자!!)

  • Python에서 true, false를 작성할 때는 꼭 대문자로 시작해야 한다.

3-3. 다른 풀이 참고

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

count()를 이용해서 한 번에 풀 수도 있었다. 정석대로 풀으신 분도 계셨고 이렇게 더 간소화한 코드로 작성하신 분도 꽤 많으셨다.

오랜만에 Python 하려니까 문법이 살짝 헷갈리긴 하지만 복기하면서 공부해 나가겠습니다!

profile
Data Science and Natural Language Processing

0개의 댓글

관련 채용 정보