Where who wants to meet someone
리스트 자르기 본문
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 |