Swift로 백준 8958 OX 문제를 해결하며 얻은 지식을 정리합니다.
let numberToBeScored = Int(readLine()!)!
var quizResult: [String] = []
var scored: [Int] = []
for _ in 1...numberToBeScored {
quizResult.append(readLine()!)
}
func score(quizResult: String) {
var splitted = quizResult.map { $0 }
var count = 1
var currentScore = 0
while !splitted.isEmpty {
if splitted.first! == "O" {
currentScore += count
count += 1
splitted.removeFirst()
} else {
count = 1
splitted.removeFirst()
}
}
scored.append(currentScore)
}
quizResult.forEach { score(quizResult: $0) }
scored.forEach { print($0) }
count
라는 지역변수를 이용해 문제를 연속으로 맞출 경우와 아닌 경우로 나누어 점수 산정 방식 논리를 구성해보았습니다. Queue와 유사한 개념인 removeFirst()
메서드를 통해 반환값을 받아 문제 번호가 이른 순서부터 채점하도록 작성하였습니다.