Where who wants to meet someone
왼쪽 오른쪽 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181890
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ str_list:[String]) -> [String] {
var l_index = -1
var r_index = -1
for i in 0..<str_list.count {
if str_list[i] == "l" {
l_index = i
break
}
if str_list[i] == "r" {
r_index = i
break
}
}
var result = [String]()
if l_index != -1 {
result = Array(str_list[0..<l_index])
} else if r_index != -1 {
result = Array(str_list[(r_index + 1)...])
}
return result
}
- str_list를 for문으로 돌면서 요소가 l이면 l_index에, r이면 r_index에 해당 인덱스를 저장하고 break로 종료
- 빈 String 배열 result를 만들고, l_index가 -1이 아니라면 str_list의 l_index 이전까지의 부분을 담고, 반대의 경우에는 이후의 부분을 담음
- l 또는 r이 나왔다면 조건에 부합하는 배열이 반환될 것이고, 둘 다 나오지 않았다면 빈 배열이 반환
import Foundation
func solution(_ str_list:[String]) -> [String] {
for i in 0..<str_list.count where ["l", "r"].contains(str_list[i]) {
if str_list[i] == "l" { return Array(str_list[...(i-1)]) }
else { return Array(str_list[(i+1)...]) }
}
return []
}
- 똑같이 for문을 사용하여 str_list의 indices를 도는데, where절이 부합하면(str_list[i]가 l, r 배열에 포함되는 경우) 클로저 안의 코드 실행
- str_list[i]가 l과 r일때 반환 내용을 if...else로 처리
- for문에서 where절에 부합하는 것이 없었다면 클로저 안의 return이 실행되지 않았을 것이므로 아래로 내려와 빈 배열 반환
점수: +12
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
n개 간격의 원소들 (1) | 2024.01.24 |
---|---|
n 번째 원소까지 (2) | 2024.01.24 |
순서 바꾸기 (0) | 2024.01.23 |
n 번째 원소부터 (1) | 2024.01.23 |
배열 조각하기 (0) | 2024.01.23 |