본문 바로가기
CODING/BAEKJOON

[BAEKJOON] 8958번 OX퀴즈

by snow_white 2022. 1. 24.

문자열로 입력을 받는다고 하자.

문자열의 첫 문자부터 시작하여 O와 X 탐색한다.

첫 번째 O를 만나면 1을 더하고, 연속적으로 O를 만나면 연속되는 횟수만큼 점수가 더해진다.

연속으로 두 번째 O를 만날 경우 2점을 더한다.

연속으로 세 번째 O를 만날 경우 3점을 더한다.

그러다 X를 만나면 O의 연속이 이어질 수 없게 된다.

따라서 O를 만나도 첫 번째 O로 인식해 1점을 더한다.

이 과정을 반복하여 총점수를 구하는 문제이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int TC = Integer.parseInt(br.readLine());
		for(int i=0; i<TC; i++) {	// 전체 테스트 케이스 횟수
			String str = br.readLine();
			int cnt=0, accumulate=0;
			for(int j=0; j<str.length(); j++) {	// 문자열 길이만큼 반복
				if(str.charAt(j)=='O') {	// O일 경우
					accumulate++;
				}
				else				// X일 경우 
				{	
					accumulate = 0;		// 누적값 초기화
				}
				cnt += accumulate;
			}
			System.out.println(cnt);
		}
	}

}

https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

 

'CODING > BAEKJOON' 카테고리의 다른 글

[BAEKJOON] 2851번 슈퍼 마리오  (0) 2022.01.24
[BAEKJOON] 2577번 숫자의 개수  (0) 2022.01.24
[BAEKJOON] 1152번 단어의 개수  (0) 2022.01.24
[BAEKJOON] 15596번 정수 N개의 합  (0) 2022.01.24
[BAEKJOON] 1009번 분산 처리  (0) 2022.01.24

댓글