[ Baekjoon ] 8958번 ( Bronze II ) : OX퀴즈 (Java)

ma.caron_g·2021년 12월 14일
0
post-thumbnail

1. Problem 📃

[ OX퀴즈 ]

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


[ 문제 ]

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

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.


2. Input 📇

[ 입력 ]

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


3. Output 📠

[ 출력 ]

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


4. Example 📚

[ 입출력 예시 ]

예제 입력예제 출력
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

10
9
7
55
30

5. Solution 🔑

  1. 테스트 케이스를 담을 변수(T)를 선언하여 몇 번 실행할지에 대한 값을 입력받는다.
    한 정답지에 대한 전체 점수를 담을 변수(total)와 문제의 점수를 담을 변수(score)를 선언한다.

  2. 테스트 케이스(T)만큼 반복하면서 한 정답지에 대한 전체 점수와 문제의 점수를 나타내는 변수를 0으로 초기화한다.

  3. 정답지를 하나씩 확인하면서 맞았으면 score값을 증가(++)시켜 total값에 누적시킨다.
    틀렸다면, 점수를 다시 0으로 초기화하여 연속된 점수 다시 0으로 초기화시킨다.

  4. 한 정답지를 다 확인했으면 그 정답지의 점수(total)을 출력하고 2번으로 테스트 케이스(T)만큼 반복한다.

6. Code 💻

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

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		int T = Integer.parseInt(st.nextToken());
		int total;
		int score;
        
		for(int i=0; i<T; i++) {
			st = new StringTokenizer(br.readLine());
			total = 0;
			score = 0;
			char[] answer = st.nextToken().toCharArray();
			for(int j=0; j<answer.length; j++) {
				if(answer[j] == 'O') {
					score++;
					total += score;
				}
				else {
					score = 0;
				}
			}
			System.out.println(total);
		}

	}

}
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글