NIRVANA

[level 1] 문자열 내 p와 y의 개수 본문

Coding test(Python3)/Programmers

[level 1] 문자열 내 p와 y의 개수

녜잉 2023. 7. 6. 15:32

문제

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

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

 

문제풀이 접근법1

1) 문자열 s를 한글자씩 쪼개어 리스트에 저장

2) 반복문을 돌면서 리스트 내에 있는 p와 y의 개수를 count

3) p와 y의 개수가 같다면 true를 반환, 아니면 false를 반환 

 

def solution(s):
    answer = True
    
    count_p = 0
    count_y = 0
    list_s = list(s)

    for i in range(len(list_s)):
    
        if list_s[i] == 'p' or list_s[i] == 'P':
            count_p=count_p+1
    
        elif list_s[i] == 'y' or list_s[i] == 'Y':
            count_y = count_y+1
        

    if count_p == count_y:
        answer= True

    else:
        answer = False
    

    return answer

처음에는 문자열을 나누어야 하니까 split()를 써야하나 고민 했었다. 

하지만 split은 구분자가 있어야 하는데 해당 문자열은 구분자가 없어서 헷갈렸는데

문자열을 바로 list()에 넣으면 한글자씩 쪼개어진다는 것을 알게 되었다. 

 

참고: https://ghdwn0217.tistory.com/58

 

문자열(string)을 한 글자씩 끊어서 리스트로 바꾸기

12str="2019년은 기해년. Happy New Year!"print(list(str))cs 실행 결과>>['2', '0', '1', '9', '년', '은', ' ', '기', '해', '년', '.', ' ', 'H', 'a', 'p', 'p', 'y', ' ', 'N', 'e', 'w', ' ', 'Y', 'e', 'a', 'r', '!'] ※ a=list(str)처럼 a라는

ghdwn0217.tistory.com

 


 

다른 분들 풀이

# 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
# 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
def numPY(s):
    # 함수를 완성하세요
    return s.lower().count('p') == s.lower().count('y')



# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( numPY("pPoooyY") )
print( numPY("Pyy") )

참고: https://ooyoung.tistory.com/76

 

파이썬 count( ) 문자열의 개수, 리스트의 개수 세는 함수 (Python)

count( ) - 순서 - 1. count 함수 설명 2. 문자열에서 사용 3. 리스트에서 사용 4. 에러가 발생하는 자료형 1. count 함수 문자열 안에서 찾고 싶은 문자의 개수를 찾을 수 있다. 어떤 함수는 문자열에서만

ooyoung.tistory.com

문자열 내에 찾는 문자의 개수를 세어주는 count()의 존재를 처음 알았다!

변수.count(찾는요소) 식으로 사용하면 된다고 한다. 

 

 

지금까지는 문제가 다 쉬운 문제여서 

더 많이 풀어도 될듯하다! 내일부터는 5개씩 풀어봐야지 ^~^