본문 바로가기
Xcode/Swift - Algorithm

Swift) 프로그래머스(Lv1) 문자열 내 p와 y의 개수 (LowerCase)

by 후르륵짭짭 2020. 7. 7.
728x90
반응형

programmers.co.kr/learn/courses/30/lessons/12916

 

코딩테스트 연습 - 문자열 내 p와 y의 개수

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

programmers.co.kr

안녕하세요! 후르륵짭짭 입니다.

이번에는 새롭게 배운 문자열 함수인 lowercased()uppercased()를 알아보려 합니다.

이 문제를 풀 때, 저런 좋은 문자열 함수가 있는지 몰라서 그냥 풀었습니다.

func solution(_ s:String) -> Bool
{
    
    let array = Array(s)
    var cntP = 0
    var cntY = 0
    
    for index in array{
        
        if index == "p" || index == "P" {
            cntP += 1
        }
        else if index == "y" || index == "Y"{
            cntY += 1
        }
        
       // print(index , terminator : " ")
    }
    
    if cntP == cntY {
        return true
    }

    return false
}

딱히 엄청 좋아 보이는 코드는 아니지만 그냥 단순 비교 입니다.

 

그런데 대소문자를 구분하기 싫을 때, lowercase를 통해 대문자를 소문자로 바꿔주는 것이 있다는 것을 알게 되었습니다.

(반대는 uppercase 입니다.)

func solution2(_ s:String) -> Bool {
        
    let lowerS = s.lowercased()
    print(lowerS)
    
    let componentP = lowerS.components(separatedBy: "p")
    let componentY = lowerS.components(separatedBy: "y")
    
    return componentP.count == componentY.count
}

이렇게 입력을 소문자로 변경해주고 components 함수로 구분해줘서 배열로 만들어 줍니다. 

그리고 각각의 배열의 갯수를 비교해줍니다.

developer.apple.com/documentation/swift/string/1641392-lowercased

 

Apple Developer Documentation

 

developer.apple.com

developer.apple.com/documentation/swift/string/1640996-uppercased

 

Apple Developer Documentation

 

developer.apple.com

 

728x90
반응형

댓글