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