Swift에는 🔗count(where:) 라는 메서드가 있다.
Sequence 프로토콜의 메서드인데, 공식 문서에 다음과 같이 정의되어있음.
func count<E>(where predicate: (Self.Element) throws(E) -> Bool) throws(E) -> Int where E : Error
구현은 🔗 다음과 같다.
extension Sequence {
// ...
public func count<E>(
where predicate: (Element) throws(E) -> Bool
) throws(E) -> Int {
var count = 0
for e in self {
count += try predicate(e) ? 1 : 0
}
return count
}
}
코딩 테스트 공부 중에, count(where:) 메서드를 사용하니 컴파일 에러가 나서 로컬 환경에서 실행해 보니 이때는 또 문제가 없었음.
나중에 알고보니, count(where:) 메서드가 Swift6에 추가된 문법이어서 그랬던 것.

(프로그래머스 코딩 테스트 에디터는 Swift 5.2.5 버전으로 컴파일한다. - 2025.05.27 기준)
이 문제로 많이 헤맸던 이유가,
생성형 AI들한테 이 문제를 물어보니, 다들 엉뚱한 대답을 해서 6.0인 것을 알고도 스스로 확신하지 못했던 것 같다. (생성형 AI를 맹신하지 말자...)
우선 Gemini한테 물어보니, 다음과 같이 답변을 주었다. (2.5 Flash)
(심지어 처음에 잘못 말한 것 같아서 레퍼런스와 정확한 정보를 주고 다시 답변달라고 했는데도 다음과 같은 결과를 얻었음)
제공해 주신 정보에 따라 다시 확인해 보고 답변을 드립니다.
count(where:) 메서드의 Swift 버전 확인
먼저, count(where:) 메서드가 Swift 6부터 동작하는 것 같다는 말씀에 대해 다시 확인해 보았습니다.결론부터 말씀드리면, count(where:) 메서드는 Swift 5.0부터 정식으로 지원됩니다.
뭔가 이상해서 chatGPT한테도 물어봤더니, 다음과 같은 답변을 얻었다. (4o)
✅ 1. Sequence.count(where:) 도입 버전
count(where:)는 Swift 5.4부터 공식적으로 도입되었어.
• 구체적으로는 Swift PR #34078을 통해 Sequence에 확장으로 추가되었고,
• Swift 5.4 릴리스 노트에도 간단하게 언급되어 있어.즉, Swift 5.3 이하에서는 count(where:)는 사용할 수 없어.
심지어 chatGPT가 알려준 🔗 Swift PR #34078 은 count(where:)과는 전혀 무관한 다른 PR 이었음.
chatGPT한테 다시 물어봐도 6.0이 맞다고는 해 주었으나, 엉뚱한 SE(Swift evolution) 문서를 알려주었다...
Swift 의 Sequence 프로토콜의 확장으로 기본 구현된 메서드인 count(where:) 은 Swift 6부터 지원하는 메서드이다.
🔗 SE-0220 에서 확인할 수 있다.

또한, Swift 6의 🔗 Release Note 에도 명시되어 있는 부분이다.
(Language and Standard Library > Productivity enhancements)

count(where:)는 Swift 6에서 새로 도입된 메서드이다.