💻 Algorithm/Baekjoon

[JAVA] 백준 8958 - OX퀴즈

dlalwl_jpg 2022. 7. 1. 11:38

브론즈II

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

 

8958번: OX퀴즈

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

www.acmicpc.net

문제

"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가 나오면 점수를 0으로 초기화하였다.


코드

package bj8958;

import java.util.Scanner;

public class bj8958 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		String ox = "";
		int score = 0;
		int testcase = sc.nextInt();
		int[] sum = new int[testcase];
		
		sc.nextLine(); //입력이 그냥 넘어가는 것 방지
		
		for(int i = 0; i < testcase; i++) {
			
			ox = sc.nextLine();
			
			for(int j = 0; j < ox.length(); j++) {
				if(ox.charAt(j) == 'O') { //문자로 잘라서 O와 같다면
					score++; //점수 올리기
					sum[i] += score;
				}
				else
					score = 0; //X로 나오면 점수 초기화
			}
			
			score = 0;
		}
		
		for(int i = 0; i < testcase; i++) {
			System.out.println(sum[i]);
		}
		
		
	}

}

NOTE

sc.nextLine()을 사용할 때 입력이 그냥 넘어갈 때가 있다.

이때는 sc.nextLine()을 위에 한 번 더 써주면 해결이 가능하다.

'💻 Algorithm > Baekjoon' 카테고리의 다른 글

[JAVA] 백준 1259 - 팰린드롬수  (0) 2022.07.07
[JAVA] 백준 1920 - 수 찾기  (0) 2022.07.07
[JAVA] 백준 2920 - 음계  (0) 2022.07.01
[JAVA] 백준 2908 - 상수  (0) 2022.06.28
[JAVA] 백준 2675 - 문자열 반복  (0) 2022.06.28