Where who wants to meet someone
무작위로 K개의 수 뽑기 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181858
내 답안 / 다른 사람들의 답안
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 |