반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 문자열 내 p와 y의 개수 문제를 풀었습니다.
목차
Github
GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘
스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.
github.com
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12916
코딩테스트 연습 - 문자열 내 p와 y의 개수
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를
programmers.co.kr
풀이
해당 문제는 filter를 이용하여 해결했습니다.
다른 사람의 코드에서는 lowercased()를 써서 대소문자 구분을 없앴는데요.
lowercased()의 시간복잡도는 O(n)으로 이 문제에서는 시간 초과를 걱정할 일이 없지만 시간이 늘어나는 것은 사실입니다.
따라서 저는 논리연산자 ||를 사용하여 속도 손해 보지 않고 직관적으로 표현이 가능해봤습니다.
전체 코드
import Foundation
func solution(_ s:String) -> Bool
{
let pCount = Array(s).filter { $0 == "p" || $0 == "P" }.count
let yCount = Array(s).filter { $0 == "y" || $0 == "Y" }.count
return pCount == yCount
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형