문제
내 정답 코드
import Foundation
func solution(_ N:Int, _ stages:[Int]) -> [Int] {
var result:[Int] = []
var stage: [Stage] = []
var count: [Int] = []
var stageCount = stages.count
for i in 1...N {
for j in 0..<stages.count {
if stages[j] <= i && stages[j] > i-1 {
count.append(j)
}
if j == stages.count-1 {
stage.append(Stage(stage: i, failPersent: Double(count.count) / Double(stageCount)))
stageCount -= count.count
count = []
}
}
}
stage.sort(by: { $0.failPersent > $1.failPersent })
stage.map { result.append($0.stage) }
return result
}
struct Stage {
var stage:Int
var failPersent:Double
}
#
1. stage와 실패율을 갖는 Stage 구조체를 만든다.
2. 1부터 N단계 까지 반복문을 돌린다.
3. 0부터 stages만큼 반복문을 돌린다.
4. stages의 값이 현재 단계에서 실패한 값인지 판별한다. (i보다 작거나 같거나, i-1보다 큰 경우)
5. 판별된 인덱스의 값을 count 배열에 담는다.
6. 두번째 반복문이 끝날 때, Stage의 현재 단계와 해당 단계의 실패율을 append해준다. (count의 개수 / 남은 stage의 개수)
7. 판별된 stage 개수를 총 stage에서 빼준다. (stageCount - count.count)
8. Stage의 실패율로 정렬을 하고
9. 정렬된 배열에서 단계만 뽑아 Int배열에 추가하여 반환한다.
배운 기술
'프로그래머스 (Swift) > lv 1' 카테고리의 다른 글
[lv1] 평균 구하기 (0) | 2024.09.02 |
---|---|
[lv1] 숫자 짝꿍 (0) | 2024.08.30 |
[lv1] 핸드폰 번호 가리기 (0) | 2024.08.21 |
[lv1] x만큼 간격이 있는 n개의 숫자 (0) | 2024.08.21 |
[lv1] 두 개 뽑아서 더하기 (0) | 2024.08.07 |