[Swift] 백준알고리즘 #8958

r1verfuture·2021년 11월 3일
0

백준알고리즘

목록 보기
19/110

📝 문제

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

⌨️ 입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.

🖨 출력

각 테스트 케이스마다 점수를 출력한다.

⌨️ 예제 입력

5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

🖨 예제 출력

10
9
7
55
30

📚 내가 제출한 코드

let count = Int(readLine()!)!
for _ in 0 ..< count {
    let result = readLine()!.map { String ($0) }
    var previousScore = 0
    var totalScore = 0
    for i in result {
        if i == "O" {
            previousScore += 1
            totalScore += previousScore
        } else {
            previousScore = 0
        }
    }
    
    print(totalScore)
}

✏️ 내가 제출한 코드에 대한 설명

  • readLine() : 키보드로 입력한 값을 받는 함수
  • readLine()!.map { String ($0) } : 키보드로 입력한 값은 String 형인데 이것을 요소 하나하나로 분리해서 String 형변환한다.
  • previousScore : 이전 실행의 점수를 누적하기 위한 변수
  • totalScore : 누적 점수를 모두 더한 최종 점수 (X 일 때는 누적 점수가 0 이기 때문에 더할 필요 없다.)
  • 메모리 : 62228 KB
  • 시간 : 8 ms
  • 코드 길이 : 357 B
profile
#iOS #Swift #Developer #Python

0개의 댓글