Where who wants to meet someone

배열 만들기 5 본문

728x90

문제

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

 

프로그래머스

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

programmers.co.kr

 

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

import Foundation

func solution(_ intStrs:[String], _ k:Int, _ s:Int, _ l:Int) -> [Int] {
    var result: [Int] = []

    for intStr in intStrs {
        let intStrArr = intStr.map { String($0) }
        var rangeStr: [String] = []

        for i in 0..<l {
            rangeStr.append(intStrArr[s + i])
        }

        let translatedInt = Int(rangeStr.joined())!

        if translatedInt > k {
            result.append(translatedInt)
        }
    }
    return result
}

- intStrs 배열 내에서 반복문 실행

- 각 intStr의 element에 접근하기 위해 map을 통해 String 배열로 변환(intStrArr)

- for..in 문을 통해 0부터 l 범위 내에서 intStrArr[s + i] 인덱스의 String을 rangeStr에 추가

- rangeStr의 요소를 joined하여 Int로 형변환한 것을 translatedInt에 저장하고, 해당 값이 k보다 크다면 result에 추가

- result 값을 반환

 

func solution(_ intStrs: [String], _ k: Int, _ s: Int, _ l: Int) -> [Int] {
    return intStrs.map { Int($0.prefix(s + l).suffix(l))! }.filter { $0 > k }
}

 

 

prefix(_:) | Apple Developer Documentation

Returns a subsequence, up to the specified maximum length, containing the initial elements of the collection.

developer.apple.com

 

 

suffix(_:) | Apple Developer Documentation

Returns a subsequence, up to the given maximum length, containing the final elements of the collection.

developer.apple.com

- intStrs를 map 메서드를 사용하여 각 항목별로 클로저 내부의 코드를 수행

- 각 항목($0)은 prefix를 통해 s + l 만큼의 단어를 떼어내고(s + l은 맨 앞에서부터 원하는 문자열까지를 포함한 범위임) suffix를 통해 뒤에서 l만큼의 단어를 떼어냄(s 이전의 문자열 제외)

- 그렇게 모인 Int 요소들 중에서 filter를 통해 k보다 큰 값을 고르고 반환

 

점수: +2