본문 바로가기
Algorithm

[백준 알고리즘 JAVA] 8958번 OX퀴즈

by wook99 2024. 4. 12.

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

 

8958번: OX퀴즈

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

www.acmicpc.net

 

문제

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

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

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

입력

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

출력

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

 

 

핵심

1. scanner를 통해 테스트케이스 개수를 입력받는다.

2. 점수의 총합을 담기 위한 변수 score와 O의 개수에 따른 점수를 담을 변수 idx를 담는다.

3. scanner를 통해 O와X로 이루어진 문자열을 입력받고 charAt을 이용하여 한글자씩 검사를 진행한다.

    O가 나오면 ++idx를 해준다음 score에 누적해서 더해주고, X가 나오면 idx를 0으로 세팅해준다.

4. score를 출력하고 다음 테스트를 위해 score와 idx를 0으로 세팅한다.

5. t번 반복한다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt();

        int score = 0;
        int idx = 0;

        for (int i = 0; i < t; i++) {
            String ox = scanner.next();
            for (int j = 0; j < ox.length(); j++) {
                if(ox.charAt(j)=='X'){
                    idx = 0;
                }else{
                    ++idx;
                    score += idx;
                }
            }
            System.out.println(score);
            score = 0;
            idx = 0;
        }
    }
}