문제 출처: 백준 8958번 OX퀴즈

문제


스크린샷 2022-07-18 오후 1 43 03

풀이


반복분을 통해 O가 반복될수록 카운팅을 증가시키고, X일 경우 카운팅을 초기화해서 간단하게 풀 수 있는 문제입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/// 테스트 케이스
let N = Int(readLine()!)!
/// 테스트 케이스 길이의 배열
var arr = Array(repeating: 0, count: N)

for i in 0..<N {
  var count = 0
  let line = readLine()!
  // 입력받은 테스트케이스를 순회
  for index in line {
    // O가 나온 횟수에 따라 count증가
    if index == "O" {
      count = count + 1
      arr[i] += count
    }

    // X일 경우 count 초기화
    if index == "X" {
      count = 0
    }
  }
    
  // 결과 출력
  print(arr[i])
}
  1. 테스트 케이스를 Int 형으로 입력받고, 정답 저장과 출력을 위해 테스트 케이스 길이만큼의 배열을 선언 및 초기화합니다.
  2. N만큼 반복문을 실행해 문자열을 입력받습니다.
  3. 문자열을 순회하면서 점수를 카운팅 합니다.

중간에 X가 나올 경우 증가했던 점수가 초기화되기 때문에 이 부분만 유의하시면 풀기 쉬웠던 문제였습니다.

이렇게 풀 경우 메모리: 64048 KB, 시간: 8 ms 결과가 나오게 됩니다.

업데이트:

댓글남기기