본문 바로가기

백준 알고리즘

백준 [8958] OX퀴즈 - 자바 풀이

반응형

 

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

 

8958번: OX퀴즈

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

www.acmicpc.net


 

코드를 살펴보자.

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();
		}
		
		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;
			}
		System.out.println(sum);
		}
	}
}

 

OX가 몇 번 입력되는지 첫번째 줄에 말해주지만, 그걸 사용하지 않아도 된다.

 

String arr[] = new String[sc.nextInt()];

String 타입의 arr 문자열에 바로 입력받도록 설정한다.

 

for(int i=0; i<arr.length; i++) {
			arr[i] = sc.next();
		}

arr안에 arr이 가지고 있는 갯수 N만큼 입력받은 수를 저장한다.

 

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;
		}
	System.out.println(sum);
	}

cnt 와 sum을 정수로 설정을 하고,

j가 들어간 for문을 사용해 i번째의 줄에 있는 문자열을 들여다 보자.

arr[i].length() 를 사용해 i번째 줄에 있는 문자열의 자릿수만큼 반복해서 한 자릿수씩 들여다 본다.

 

if - 만약

arr[i].charAt(j) - arr[]의 i번째 줄에 있는 문자열에서 j번째 자릿수가

=='O' - O과 같다면 

cnt++; - cnt에 1을 더할것이고

else - O이 아니면

cnt = 0; - cnt는 0이다.

그리고 if문이 한 번 반복될 때마다 sum에 cnt값을 더할 것이다.

 

이렇게 구현된다.

반응형