Where who wants to meet someone

무작위로 K개의 수 뽑기 본문

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

무작위로 K개의 수 뽑기

Lust3r 2024. 2. 18. 10:53
728x90

문제

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

 

프로그래머스

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

programmers.co.kr

 

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

import Foundation

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

    arr.forEach { element in
        if !result.contains(element), result.count != k {
            result.append(element)
        }
    }

    if result.count != k {
        result += Array(repeating: -1, count: k - result.count)
    }

    return result
}

- arr의 각 항목을 forEach로 돌면서 result에 없는 항목인데 result가 k보다 작다면 result에 추가하고, 이 과정을 끝냈음에도 result의 수가

  k와 같지 않다면 그만큼 -1을 생성한 배열을 뒤에 더해서 반환

 

// 풀이 1
import Foundation

func solution(_ arr:[Int], _ k:Int) -> [Int] {
    var s = Set<Int>()
    var ret = [Int]()
    arr.forEach {
        if !s.contains($0) {
            ret.append($0)
            s.insert($0)
        }
    }
    while ret.count < k {
        ret.append(-1)
    }
    return ret[0..<k].map{Int($0)}
}

// 풀이 2
import Foundation

func solution(_ arr:[Int], _ k:Int) -> [Int] {
    var answer = [Int](), exist = Set<Int>()
    arr.forEach { if !exist.contains($0) { answer.append($0); exist.insert($0) } } 
    return answer.count < k ? answer + Array(repeating: -1, count: k - answer.count) : Array(answer[..<k])
}

- 사용한 방법의 차이만 있을 뿐 다양한 풀이가 forEach로 각 항목을 검사하고, 마지막에 부족한 수만큼 -1을 채우고 있었다

 

점수:+5 

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

그림 확대  (0) 2024.03.19
전국 대회 선발 고사  (0) 2024.03.16
두 수의 합  (0) 2024.02.18
커피 심부름  (0) 2024.02.16
문자열이 몇 번 등장하는지 세기  (0) 2024.02.16