Algorithm/백준알고리즘

[백준알고리즘] 1차원 배열 6단계 -8958번 OX퀴즈(JAVA)

개발자하소서 2022. 6. 27. 08:53
728x90
반응형
SMALL

📌문제

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

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

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

 

 📌입력

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

 
 
 

📌출력

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

 

※ 해석 ※

첫째 줄에 테스트 케이스의 개수 N이 주어진다.

그 후로 N개만큼 "OXOOOOXXO" 가 한줄씩 주어진다.

O는 문제를 맞은것, X는 문제를 틀린것이다.

연속으로 문제를 맞추면 점수가 연속된 O의 개수이다.

ex)

    OOO = 1 + 2 + 3 = 6점

     OOX = 1 + 2 + 0 = 3점

     OXO = 1 + 0 + 1 = 2점

     XXO = 0 + 0 + 1 = 1점

 

 

 

📌코드

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
       
        int n = sc.nextInt(); // 테스트케이스 개수를 입력받는다.
        
        String str; // ox 문자열을 담을 String 변수를 선언 
        
        for(int i =0; i<n; i++){
         // 입력받은 테스트케이스 수인 n번만큼 반복한다. 
            str = sc.next();
            // ox를 입력받는다.
            int sum = 0; 
            // 총합계 선언
            int cnt = 0; 
            // 입력받을 문자열 'o' 의 개수 선언 
            
            for(int j=0; j<str.length(); j++){
                //ox 입력된 크기만큼 반복 
                if(str.charAt(j) == 'O'){
                    // 만약 입력 받은 문자가 o라면 
                    cnt ++; 
                    // o의 개수를 증가 
                    sum += cnt;
                    // 총합계 증가 
                }else{
                    cnt = 0;
                    // 입력 받은 문자가 x 라면 다시 cnt를 0으로 변경 
                }
                
            }
            System.out.println(sum);
            
        }
        
    }
}

 

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
         
        String arr[] = new String[sc.nextInt()];
         // 테스트 케이스 배열을 선언 
        for(int i=0; i<arr.length; i++){
            arr[i] = sc.next();
            // 반복문을 이용하여 입력받은 테스트 케이스 수만큼 배열에 삽입
            // 즉, ox를 넣는다.
        }
        
        for(int i =0; i<arr.length; i++){
            int sum =0; // 누적합계 
            int cnt =0; // o의 횟수
            
            for(int j=0; j<arr[i].length(); j++){
                
                if(arr[i].charAt(j) == 'O'){
                     cnt++;
                     sum += cnt;
                }else{
                    cnt =0;
                }
            }System.out.println(sum);
        }
 }
}

 

728x90
반응형
LIST