(백준)8598번 OX 퀴즈 풀기

DevSeoRex·2022년 6월 7일
0

백준

목록 보기
9/12

이번 문제는 문자열이 O로 계속 이어질 경우 1+2+3+4... 점수를 1점씩 추가해서 더하여 계산하고, X일경우 0점으로 처리후 다시 O가 나오면 1점 부터 다시 더해 총점을 계산하는 문제이다.

Step1.

Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		String quiz = "";
		int[] score = new int[a];
		int count = 0;

퀴즈의 채점결과를 입력받을 횟수인 정수 a를 Scanner로 입력받고, quiz의 정답 여부를 문자열로 받을 변수인 quiz를 초기화 해준다.
점수를 저장할 배열 score를 선언해주고, 'O'가 몇번 나왔는지 Count해줄 count 변수를 초기화해준다.

Step2.

for (int i = 0; i < a; i++) {
			quiz = sc.next();
			for (int j = 0, k=0; j < quiz.length(); j++,k++) {
				if (quiz.charAt(j) == 'O') {
					score[i] += 1;
					count += 1;
					if (count >= 2) {
						score[i] = score[i] + (k * 1);
					}
				}else {
					count = 0;
					k = -1;
				}
			}
		}

quiz 변수에 O와X로 이루어진 퀴즈 채점결과를 저장해주고,
quiz를 charAt() 메서드를 이용해서 한글자씩 비교해준다.
'O'일 경우 1씩 score를 증가시키고, count도 1씩 증가시킨다.
count가 2보다 크거나 같을 경우, score에 1이 아닌 (k*1) 를 더해준다.
'X'가 나올경우 count를 초기화 시키고 k값을 -1로 만든다.

k값을 -1로 만들지 않으면 1씩 증가하는 퀴즈의 연속 정답 값이,
X를 만났을때 초기화 되지 않고 계속 커지기 때문이다.

Step.3

for(int i=0; i<score.length; i++) {
			System.out.println(score[i]);
		}

score 배열의 값(퀴즈 점수들)을 for문으로 뽑아내어 출력해준다.

전체 코드

import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		String quiz = "";
		int[] score = new int[a];
		int count = 0;
		for (int i = 0; i < a; i++) {
			quiz = sc.next();
			for (int j = 0, k=0; j < quiz.length(); j++,k++) {
				if (quiz.charAt(j) == 'O') {
					score[i] += 1;
					count += 1;
					if (count >= 2) {
						score[i] = score[i] + (k * 1);
					}
				}else {
					count = 0;
					k = -1;
				}
			}
		}
		for(int i=0; i<score.length; i++) {
			System.out.println(score[i]);
		}
	}

}



0개의 댓글