철갑이의 이모저모

[백준] 8958번(OX퀴즈) with Java 본문

알고리즘

[백준] 8958번(OX퀴즈) with Java

철갑 2020. 9. 27. 17:48
728x90

문제

www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

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

www.acmicpc.net

풀이

O가 나올때마다 count 값을 누적해주고 result 배열에 저장 해준다. O가 안나오면 count를 0으로 초기화 한다.

result 배열 값을 전부 더한 값을 arr에 넣어주고 출력.

좀 더 시간을 단축해볼 것.

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

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		int[] arr = new int[n];
		int cnt = 0;
		
		for(int i=0; i<n; i++) {
			String[] ox = br.readLine().split("");
			int[] result = new int[ox.length];
			
			for(int j=0; j<ox.length;j++) {
				if(ox[j].equals("O")) {
					cnt++;
					result[j]=cnt;
				}else {
					cnt=0;
					result[j]=cnt;
				}
			}
			
			for(int h=0; h<result.length; h++) {
				arr[i] += result[h];
			}
			
			cnt=0;
			
		}
		
		for(int k=0; k<arr.length; k++) {
			System.out.println(arr[k]);
		}
		
		
	}

}

728x90