[Swift] 8958 OX퀴즈 - 백준 B2

Ryan (Geonhee) Son·2021년 7월 6일
0

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() 메서드를 통해 반환값을 받아 문제 번호가 이른 순서부터 채점하도록 작성하였습니다.

사용한 개념

profile
합리적인 해법 찾기를 좋아합니다.

0개의 댓글