풀이1

import java.util.Scanner;

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();
		}			
		
		sc.close();
		
		for(int i=0; i< arr.length; i++) {
			int cnt=0; 
			int sum=0;
			
			for(int j=0; j<arr[i].length(); j++) {
				if(arr[i].charAt(j)=='O') {
					cnt++;
				}else {
					cnt=0;
				}
				sum=sum+cnt;
			}
			System.out.println(sum);
		}
	}
}

Scanner배열로 값을 받아 데이터를 하나씩 비교해서 O가 나오면 cnt+1을 X가 나오면 cnt값을 0으로 초기화 해주었다.

 

풀이2

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

public class Main{
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] arr = new String[Integer.parseInt(br.readLine())];
		//StringBuilder sb = new StringBuilder();
		for(int i=0; i<arr.length; i++) {
			arr[i] = br.readLine();
		}
		
		for(int i=0; i<arr.length; i++) {
			int cnt=0;
			int sum=0;
			for(int j=0; j<arr[i].length(); j++) {
				if(arr[i].charAt(j) =='O') {
					cnt++;
				}else {
					cnt=0;
				}
				sum+=cnt;
			}
			//sb.append(sum).append('\n');
			System.out.println(sum);
		}
		
	}
}

Scanner보다 좀 더 효율성이 좋은 BufferedReader를 사용한 예제이다.

 

 

 

 

 

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

 

8958번: OX퀴즈

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

www.acmicpc.net

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 알고리즘 2562 최댓값  (0) 2021.04.16

+ Recent posts