본문 바로가기

CodingTest/Programmers

[ 프로그래머스 ] 문자열 내 p와 y의 개수

/  제출 1  /

def solution(s):
    
    pCount = 0
    yCount = 0
    
    for char in s:
        if char == 'p' or char == 'P':
            pCount += 1
        elif char == 'y' or char == 'Y':
            yCount += 1
    
    if pCount == 0 and yCount == 0:
        return True
    elif pCount == yCount:
        return True
    else:
        return False
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
 
정말 간단한 문제였습니다. 문제 이해하는 데에 별 다른 시간이 소요되지 않는 문제였던 것 같습니다.
대신 어떻게 다양한 방식으로 언어를 활용해볼 지(문법을 다양하게 적용해볼 지) 생각해 볼 수 있을 것 같습니다.
 
/  제출 2  /
def solution(s):
    
    pCount = 0
    yCount = 0
    
    for char in s:
        if char.upper() == 'P': # 이렇게 대문자로 맞추거나
            pCount += 1
        elif char.lower() == 'y': # 이렇게 소문자로 하는 방식도 있습니다.
            yCount += 1
    
    if pCount != yCount:
        return False
    else:
        return True
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
 
제출 1처럼 알파벳을 대문자에 한 번, 소문자에 한 번 하는 것이 아니라 알파벳 자체를 변환해서 체크할 수도 있습니다.

p와 y 각각 대문자, 소문자를 적용시켜봤습니다.

 

pCount와 yCount도 문제를 다시 보니 False 를 리턴하는 경우가 되게 특정되는 것을 확인해 간단하게 바꿔줬습니다.

더 직관적이게도 바꿔볼 수도 있을 것 같습니다.

 

 

/  제출 3  /

def solution(s):
    
    pCount = 0
    yCount = 0
    
    for char in s:
        if char.upper() == 'P': # 이렇게 대문자로 맞추거나
            pCount += 1
        elif char.lower() == 'y': # 이렇게 소문자로 하는 방식도 있습니다.
            yCount += 1
    
    return pCount == yCount

 

채점 결과
정확성: 100.0
합계: 100.0 / 100.0
 
네 어차피 비교연산에서 boolean값을 반환하므로, 두 값이 같지 않은 경우에만 false하고 나머지는 true를 return하게 했습니다.
 
베이직하지만 생각 정리하는 연습을 해볼 수 있었습니다.