본문 바로가기
프로그래밍/백준 문제 풀이(자바)

백준 8958번 문제 자바 답/해설(OX 문제)

by 리드민 2021. 11. 27.
반응형

[1] 백준 카테고리 단계별로 풀어보기

1차원 배열

6단계 8958번 문제

OX퀴즈

링크

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

 

8958번: OX퀴즈

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

www.acmicpc.net

 

[2] 문제

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

1. 입력

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

2. 출력

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

3. 예제 입력 1 5 OOXXOXXOOO OOXXOOXXOO OXOXOXOXOXOXOX OOOOOOOOOO OOOOXOOOOXOOOOX

4. 예제 출력 1

10 9 7 55 30

5. 예제 입력 2

3

10 20 30

 

[3] 정답

1. 정답 해설 미포함

import java.util.Scanner;
// java.util.Scanner를 import한다.

public class Main {
// Main class public으로 선언
	public static void main(String[] args) {
	// main 메소드를 접근 제한 없이 정적으로 값을 반환받지 않고 main 함수 선언
		Scanner in = new Scanner(System.in);
		// Scanner 객체 in 선언

		String arr[] = new String[in.nextInt()];
		// String 배열 arr[]를 선언하고 배열의 크기를 in.nextInt로 함

		for (int i = 0; i < arr.length; i++) {
		// for문 선언
			arr[i] = in.next();
			// 값을 입력받아 변수에 저장
		}

		in.close();
		// 객체 in를 종료한다.
		for (int i = 0; i < arr.length; i++) {
		// for문을 선언한다
			int cnt = 0;
			// 변수 cnt를 선언하고 0으로 초기화한다.
			int sum = 0;
			// 변수 sum를 선언하고 0으로 초기화한다.
			
			for (int j = 0; j < arr[i].length(); j++) {
			// for문을 선언한다
				if (arr[i].charAt(j) == 'O') {
				// if문을 선언한다. 
					cnt++;
					//cnt+1 값을 변수 cnt에 저장한다
				} 
				else {
					cnt = 0;
					// 값 0을 변수 cnt에 저장한다
				}
				sum += cnt;
				// cnt + sum 값을 변수 sum에 저장한다
			}
			System.out.println(sum);
			// sum값을 출력한다
		}
	}
}

 

2. 정답 해설 포함

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);

		String arr[] = new String[in.nextInt()];
 
		for (int i = 0; i < arr.length; i++) {
			arr[i] = in.next();
		}
		
		in.close();
		
		for (int i = 0; i < arr.length; i++) {
			
			int c = 0;
			int sum = 0;
			
			for (int j = 0; j < arr[i].length(); j++) {
				
				if (arr[i].charAt(j) == 'O') {
					c++;
				} 
				else {
					c = 0;
				}
				sum += c;
			}
			
			System.out.println(sum);
		}
	}
}

 

반응형