본문 바로가기
백준

[백준] 8958번 : OX퀴즈 – JAVA [자바]

by Hongwoo 2022. 7. 7.
반응형

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

 

8958번: OX퀴즈

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 8958번 OX퀴즈는 브론즈 2 난이도의 구현 및 문자열 문제이다. 이 문제에서는 처음에 테스트 케이스의 개수 T가 주어지고 각 테스트 케이스에는 O와 X만으로 이루어진 문자열이 주어진다. O는 맞은 문제를 뜻하고 X는 틀린 문자를 뜻한다. 문제를 맞은 경우에는 그 문제까지 연속되게 맞은 O의 점수가 된다. 이런 식으로 맞은 문제의 점수를 다 더해서 각 테스트 케이스마다 출력하면 되는 문제이다. 

 

이 문제는 간단하게 해결할 수 있다. 우선 점수를 저장하는 int형 변수 score와 더할 점수 add를 선언한다. 그리고 O일 때 먼저 add를 1씩 증가시켜 주고 바로 score에 add를 더해준다. 만약에 X일 경우 add를 0으로 초기화시켜준다. 이런 식으로 모든 테스트 케이스를 접근하면 된다.

 

자세한 코드는 밑에 있다. 

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());  //테스트 케이스 개수
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < t; i++) {
            String s = br.readLine();
            int add = 0;  //더할 점수
            int score = 0;  //점수
            for (int j = 0; j < s.length(); j++) {
                if (s.charAt(j) == 'O') {
                    add++;  //더할 점수 +1
                    score += add;  //총점수에 더함
                } else {
                    add = 0;  //X이면 더할 점수 초기화
                }
            }
            sb.append(score + "\n");
        }
        System.out.print(sb);
    }
}

 

 

반응형

댓글