최대 1 분 소요

https://school.programmers.co.kr/learn/courses/30/lessons/12916

제목과 같이 문자열에 ‘p’와 ‘y’의 개수를 비교해 같으면 True, 다르면 False, 둘다 없다면 True를 리턴하는 문제다..

처음에 작성한 코드는

def solution(string) :
    answer = True
    string = string.lower()
    if 'p' in string or 'y' in string :
        p = string.count('p')
        y = string.count('y')
  
	if (p != y) :
        answer = False
	return answer

이렇게 작성했는데 UnboundLocalError(변수의 scope를 벗어났을 때 생기는 에러)가 떴다. 그 이유는 처음 if문 안에서 p와 y를 할당했지만 해당 if문 밖에서 p와 y를 사용해 사용 가능한 scope를 벗어나서 생긴 에러였다.

정답 코드

def solution(string) :
    answer = True
    string = string.lower()
    
    p = string.count('p')
    y = string.count('y')
    
    if (p != y) :
        answer = False
       
    return answer

다른 사람의 풀이

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

아.. 문자열 내에 p와 y 둘다 없을 경우 0으로 같기때문에 이렇게 작성해도 상관이 없구나.. 한줄풀이 대박이다.

댓글남기기