정리하고기록하자

백준 (JAVA) - OX퀴즈 (8958) 본문

백준 - 알고리즘

백준 (JAVA) - OX퀴즈 (8958)

정리하고기록하자 2022. 2. 10. 13:50
반응형

백준 - 알고리즘 1차원배열 OX퀴즈(8958) 문제

 

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

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

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

 

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

 


일단 O , X 란 문자열을 입력 하기 때문에 문자 배열을 선언 해야 한다.

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		/*
		 * arr : 문자열 배열은 선언한다. ( 문제에서 'O' or 'X' 를 입력 하기 때문에 )
		 * */
		String[] arr = new String[sc.nextInt()];
		
	}
}

문자열 배열 선언 후 그 안에 원소의 값들을 입력 해야 한다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		/*
		 * arr : 문자열 배열은 선언한다. ( 문제에서 'O' or 'X' 를 입력 하기 때문에 )
		 * */
		String[] arr = new String[sc.nextInt()];
		
		/*
		 * 배열 크기 만큼 반복문을 돌린 후
		 * 배열 원소의 값을 넣어 준다.
		 * */ 
		for( int i = 0; i < arr.length; i ++) {
			arr[i] = sc.next();
			System.out.println("arr[i] : " + arr[i]); // 일단 찍어보자 어찌 나오는지
		}
		/*
		 * 여기까지 배열 상황
		 * ex ) ['OXOXOXOX','OXXXOXOOO','OXXOXOXXO'] 
		 * */
		sc.close();		
	}
}

일단 여기 까지 배열 선언 하고 

그 배열 안에 원소들을 입력 하는거 까지 했다.


이제 연속되는 문자들의 합을 구하자

// 첫번째 반복문은 배열의 크기 만큼 반복문
for( int i = 0; i < arr.length; i ++){
	
}

	// 첫번째 반복문은 배열의 크기 만큼 반복문
	for( int i = 0; i < arr.length; i ++){
		int count = 0;
		int sum = 0;
		// 두번째 반복문은 배열 원소의 길이 만큼 반복문
		for ( int j = 0 ; j < arr[i].length(); j++ ) {
			if( arr[i].charAt(j) == 'O') {
				count++;
			} else {
				count = 0;
			}
				sum += count;
			}
			// 반복문이 끝나면 출력
			System.out.println(sum);
		}

첫번째 반복문에서는 배열의 크기 만큼 반복문을 돌린다.

두번째 반복문에서는 배열의 원소의 길이 만큼 반복문을 돌린다.


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		// arr : 문자열 배열은 선언한다. ( 문제에서 'O' or 'X' 를 입력 하기 때문에 )
		String[] arr = new String[sc.nextInt()];
		
		/*
		 * 배열 크기 만큼 반복문을 돌린 후
		 * 배열 원소의 값을 넣어 준다.
		 * */ 
		for( int i = 0; i < arr.length; i ++) {
			arr[i] = sc.next();
			System.out.println("arr[i] : " + arr[i]); // 일단 찍어보자 어찌 나오는지
		}
		
		/*
		 * 여기까지 배열 상황
		 * ex ) ['OXOXOXOX','OXXXOXOOO','OXXOXOXXO'] 
		 * */
		sc.close();
		
		// 첫번째 반복문은 배열의 크기 만큼 반복문
		for( int i = 0; i < arr.length; i ++){
			int count = 0;
			int sum = 0;
			// 두번째 반복문은 배열 원소의 길이 만큼 반복문
			for ( int j = 0 ; j < arr[i].length(); j++ ) {
				if( arr[i].charAt(j) == 'O') {
					count++;
				} else {
					count = 0;
				}
				sum += count;
			}
			// 반복문이 끝나면 출력
			System.out.println(sum);
		}		
	}
}

그럼 끝!

반응형