본문 바로가기
Algorithm

백준 알고리즘 8958번 문제풀이 - 자바(JAVA)

by LasBe 2021. 9. 11.
반응형

문제

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

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

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

입력

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

출력

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

 


결과


코드

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int arraySize = sc.nextInt();
        String[] arr = new String[arraySize];
        for(int i=0; i<arraySize; i++){
            arr[i] = sc.next();
        }

        for(int i =0; i<arraySize; i++){
            char[] arr2 = arr[i].toCharArray();
            int score = 0;
            int plus = 1;
            for(int k =0; k < arr2.length; k++){
                if(arr2[k] == 'O'){
                    score += plus;
                    plus++;
                }
                else{plus = 1;}
            }
            System.out.println(score);
        }
    }
}

 


문제풀이

Scanner로 받아온 OX문자열들을 toCharArray()로 문자 별로 쪼개 다시 한번 배열에 저장해준다.

쪼갠 배열에서 O가 연속되면 획득 점수를 1씩 늘리고 X가 나왔을 때는 1로 초기화해준다.

반응형

댓글


오픈 채팅