[Swift]ユニフォーム-プログラマーLv 1
5998 ワード
SWIFTを用いてプログラマーのユニホーム問題を解決し,得られた知識を整理する.
質問に移動
盗まれたユニホームの
Set filter(_:)
質問に移動
に答える
import Foundation
func solution(_ n: Int, _ lost: [Int], _ reserve: [Int]) -> Int {
var losts = Set(lost).subtracting(Set(reserve))
var participants = Set(1...n).subtracting(losts)
let reservables = reserve.filter { !lost.contains($0) }
reservables.forEach {
let previousNumber = $0 - 1 == 0 ? 1 : $0 - 1
let followingNumber = $0 + 1 == 0 ? 1 : $0 + 1
if losts.contains(previousNumber) {
losts.remove(previousNumber)
participants.insert(previousNumber)
} else if losts.contains(followingNumber) {
losts.remove(followingNumber)
participants.insert(followingNumber)
}
}
return participants.count
}
考察する
盗まれたユニホームの
lost
配列では、余計なことがないために授業に参加できない学生をlosts
と定義し、そのうち借りなくても現在の授業に参加できる学生をparticipants
と定義し、残りの複数のユニホームが実際に貸すことができる学生をreservables
と定義している.reservables
内部の各生徒は、losts
から自分の前後番号に転送されたものを削除する行為を実行している.使用する概念
Reference
この問題について([Swift]ユニフォーム-プログラマーLv 1), 我々は、より多くの情報をここで見つけました https://velog.io/@ryan-son/Swift-체육복-프로그래머스-Lv-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol