Where who wants to meet someone

빈 배열에 추가, 삭제하기 본문

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

빈 배열에 추가, 삭제하기

Lust3r 2024. 2. 5. 21:26
728x90

문제

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

 

프로그래머스

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

programmers.co.kr

 

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

import Foundation

func solution(_ arr:[Int], _ flag:[Bool]) -> [Int] {
    var result = [Int]()
    
    for i in flag.indices {
        if flag[i] == true {
            result.append(contentsOf: Array(repeating: arr[i], count: arr[i] * 2))
        } else {
            result = Array(result.prefix(result.count - arr[i]))
        }
    }

    return result
}

- flag[i]가 true라면 arr[i] * 2만큼 arr[i]를 반복한 배열을 추가해주고, false라면 그 수만큼 뺀 값으로 치환(prefix)

 

// 풀이 1
import Foundation

func solution(_ arr:[Int], _ flag:[Bool]) -> [Int] {
    var x = [Int]()
    for i in 0..<arr.count {
        if flag[i] {
            for _ in 0..<arr[i]*2{
                x.append(arr[i])
            }
        } else {
            for _ in 0..<arr[i]{
                x.removeLast()
            }
        }
    }
    return x
}

// 풀이 2
import Foundation

func solution(_ arr: [Int], _ flag: [Bool]) -> [Int] {
    var result: [Int] = []

    for i in 0..<flag.count {
        if flag[i] {
            for _ in 0..<arr[i] * 2 {
                result.append(arr[i])
            }
        } else {
            for _ in 0..<arr[i] {
                result.removeLast()
            }
        }
    }

    return result
}

 

 

점수: +2