Where who wants to meet someone
배열 만들기 5 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181912
내 답안 / 다른 사람들의 답안
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 }
}
- intStrs를 map 메서드를 사용하여 각 항목별로 클로저 내부의 코드를 수행
- 각 항목($0)은 prefix를 통해 s + l 만큼의 단어를 떼어내고(s + l은 맨 앞에서부터 원하는 문자열까지를 포함한 범위임) suffix를 통해 뒤에서 l만큼의 단어를 떼어냄(s 이전의 문자열 제외)
- 그렇게 모인 Int 요소들 중에서 filter를 통해 k보다 큰 값을 고르고 반환
점수: +2
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
문자열 뒤의 n글자 (0) | 2024.01.18 |
---|---|
부분 문자열 이어 붙여 문자열 만들기 (0) | 2024.01.18 |
문자열 여러 번 뒤집기 (0) | 2024.01.17 |
9로 나눈 나머지 (0) | 2024.01.17 |
글자 이어 붙여 문자열 만들기 (0) | 2024.01.17 |