Where who wants to meet someone

리스트 자르기 본문

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

리스트 자르기

Lust3r 2024. 1. 23. 12:33
728x90

문제

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

 

프로그래머스

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

programmers.co.kr

 

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

import Foundation

func solution(_ n:Int, _ slicer:[Int], _ num_list:[Int]) -> [Int] {
    let (a, b, c) = (slicer[0], slicer[1], slicer[2])
    switch n {
        case 1:
            return Array(num_list[0...b])
        case 2:
            return Array(num_list[a...])
        case 3:
            return Array(num_list[a...b])
        default:
            var arr = [Int]()
            var index = a

            while index <= b {
                arr.append(num_list[index])

                index += c
            }

            return arr
    }
}

- case 1~3은 조건에 맞게 배열을 슬라이싱 하여 반환

- default(case 4)는 비슷한 방법으로 하려 했으나 마지막 테스트 케이스에서 계속 오류가 발생(질문하기에 올라온 모든 반례를 통과했음에도..).

- 그래서 문제는 해결해야 하기에 arr, index 변수를 가지고 풀어서 해결

 

import Foundation

func solution(_ n:Int, _ slicer:[Int], _ num_list:[Int]) -> [Int] {
    if n == 1 { return Array(num_list[...slicer[1]]) }
    if n == 2 { return Array(num_list[slicer[0]...]) }
    if n == 3 { return Array(num_list[slicer[0]...slicer[1]]) }
    return stride(from: slicer[0], through: slicer[1], by: slicer[2]).map { num_list[$0] }
}

- 풀이를 보니까 이해가 가는게, 값이 2씩 차이가 나는 것이 아니라 인덱스가 2씩 차이가 나야 하기 때문에 오류가 났던 것 같다.

 

점수: +7

'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글

배열 만들기 3  (0) 2024.01.23
첫 번째로 나오는 음수  (0) 2024.01.23
가까운 1 찾기  (0) 2024.01.22
카운트 다운  (0) 2024.01.22
글자 지우기  (0) 2024.01.22