(Swift) 백준 8958 OX퀴즈

SteadySlower·2022년 5월 10일
0

Coding Test

목록 보기
19/298

8958번: OX퀴즈

처음 풀이

let T = Int(readLine()!)!

(0..<T).forEach { _ in
    let input = readLine()!
    var finalScore = 0
    var currentScore = 0
    for char in input {
        if char == "O" {
            currentScore += 1
            finalScore += currentScore
        } else {
            currentScore = 0
        }
    }
    print(finalScore)
}
  • String을 반복문으로 돌면서 O이 나올 때 마다 현재 점수를 계산해서 최종 점수에 더하고 X가 나오면 현재 점수를 0으로 되돌려 놓는 방식
  • 💡 String은 index로 접근은 안되지만 반복문은 사용할 수 있음!

숏코딩

let T = Int(readLine()!)!

(0..<T).forEach { _ in
    print(readLine()!.split(separator: "X").reduce(0) {
        $0 + ($1.count * ($1.count + 1)) / 2
    })
}
  • O이 연속된 갯수 n만큼 1 + 2 + .. + n의 점수를 얻는 방식 (= 등차수열의 합)
  • 들어온 입력을 X로 구분해서 [String]으로 바꾸고 O의 길이만큼 등차수열 공식을 활용해서 점수 계산하기
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글