본문 바로가기

알고리즘 & 문제풀이

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

설계

반복분을 통해 문자열 하나씩 확인하여 p 인 경우 +1 , y 인 경우 -1 하여 결과가 0을 기준으로 true, false로 반환

대문자 및 소문자 통일

foreach 사용

git : 과일장수

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


문제 풀이

∙ 문자열 대문자로 통일 uppercased도 결과적으론 문자열 길이만큼 탐색하여 비효율적..?

∙ 문자열 foreach 하여 p, y 카운팅

func solution(_ s:String) -> Bool
{
    var ans:Bool = false
    var counter: Int = 0
    var upperS = s.uppercased()

    upperS.forEach{ str in
        if(str == "P") {
            counter += 1
        } else if(str == "Y") {
            counter -= 1
        }
    }
    
    if(counter == 0) {
        ans = true
    }

    return ans
}


solution("sspPyyy")

다른 사람 풀이 분석

프로그래머스 - 전대식 , inuinseoul 님


import Foundation

func solution(_ s:String) -> Bool
{
    let string = s.lowercased()
    return string.components(separatedBy: "p").count == string.components(separatedBy: "y").count
}

∙ components 는 split 와 동일한 역할을 수행한다.

∙ p, y를 뺀 길이를 비교