Where who wants to meet someone

문자열이 몇 번 등장하는지 세기 본문

프로그래머스 알고리즘 문제 기록/코딩 기초 트레이닝

문자열이 몇 번 등장하는지 세기

Lust3r 2024. 2. 16. 11:28
728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 답안 / 다른 사람들의 답안

import Foundation

func solution(_ myString:String, _ pat:String) -> Int {
    let myString = myString.map { String($0) }
    var result = 0

    for i in 0...(myString.count - pat.count) {
        if myString[i...i + (pat.count - 1)].joined() == pat {
            result += 1
        }
    }

    return result
}

- for문으로 가용한 범위를 돌면서, pat 글자 수만큼 배열에서 추출한 값을 joined()한 값과 pat가 맞는지 비교하고 동일한 문자열이라면 result 값을 증가시킨 뒤 반환

 

// 풀이 1
import Foundation

func solution(_ myString:String, _ pat:String) -> Int {
    var s = Array(myString)
    var ans = 0

    for i in 0..<s.count-pat.count+1 where s[i..<i+pat.count].map{String($0)}.joined() == pat{
        ans += 1
    }
    return ans
}

// 풀이 2
import Foundation

func solution(_ myString:String, _ pat:String) -> Int {
    let myString = Array(myString)
    return (0...myString.count - pat.count).filter { String(myString[$0..<($0+pat.count)]) == pat }.count
}

- where절로 조건을 수행한 풀이 방법과 범위에 filter를 걸어 수행한 풀이 방법이 있었다.

 

점수: +3