Algorithm

[Java] 백문 문제 8958 - OX퀴즈

isaac.kim 2022. 4. 23.
728x90
반응형

[Java] 백문 문제 8958 - OX퀴즈

백준 문제 OX 퀴즈

 

문제

 

 

 

입력과 출력

 

 

예제 입력과 출력

 

 

 

전체 소스코드

 

package com.company;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        String[] problems = new String[n];

        int[] scores = new int[n];
        Arrays.fill(scores, 0);

        int tscore = 0;
        boolean check = false;

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

        sc.close();

        // 한 문제씩 점수 내기
        for (int j = 0; j < problems.length; j++) {
            check = false;
            tscore = 0;
            for (int k = 0; k < problems[j].length() ; k++) {
                if (problems[j].charAt(k) == 'O') {
                    check = true;
                    tscore ++;
                }
                else {  // X
                    check = false;
                    tscore = 0;
                }

                if (check) {
                    scores[j] += tscore;
                }
            }
            System.out.println(scores[j]);
        }


    }
}

 

소스 코드 설명

Scanner sc = new Scanner(System.in);      
                                          
int n = sc.nextInt();                     
                                          
String[] problems = new String[n];        
                                          
int[] scores = new int[n];                
Arrays.fill(scores, 0);                   
                                          
int tscore = 0;                           
boolean check = false;                    
                                          
for (int i = 0; i < problems.length; i++) 
    problems[i] = sc.next();              
                                          
sc.close();

Java에서 입력 받는 클래스 Scanner를 생성해서 n개의 OX 문제 결과 묶음 수를 입력 받는다. int n = sc.nextInt();

 

n개의 문제 결과를 problems 배열 길이로 세팅된다. String[] problems = new String[n];

 

결과들의 점수들을 담을 변수 int[] scores = new int[n]; 를 선언한다.

 

Arrays.fill 클래스 메서드를 사용해 점수를 담은 배열 변수 scores의 기본 값을 0으로 셋팅한다.

 

반복문을 통해 문제 수 만큼 OX 문제 결과 묶음을 입력받는다.

 

그리고 Scanner 객체를 소멸시킨다.

 

 

 

// 한 문제씩 점수 내기                                              
for (int j = 0; j < problems.length; j++) {                 
    check = false;                                          
    tscore = 0;                                             
    for (int k = 0; k < problems[j].length() ; k++) {       
        if (problems[j].charAt(k) == 'O') {                 
            check = true;                                   
            tscore ++;                                      
        }                                                   
        else {  // X                                        
            check = false;                                  
            tscore = 0;                                     
        }                                                   
                                                            
        if (check) {                                        
            scores[j] += tscore;                            
        }                                                   
    }                                                       
    System.out.println(scores[j]);                          
}

이중 포문으로 각 문제들의 점수를 계산한다.

 

외부 반복문에서는 문제 결과 묶음 수 만큼 반복하고, 내부 반복문은 문제 결과의 개 수만큼 반복한다.

 

문제 결과 묶음 당 O, X인지 체크를 할 변수와 임시로 점수를 가산할 변수를 초기화 한다.

check = false; tscore = 0;

 

내부 반복문에서 한 글자씩 확인을 하는데, 

'O'이면 check를 true를 해서 점수를 가산할 수 있도록 하고

'X'이면 check를 false를 해서 점수를 0으로 세팅한다.

 

그리고 결과 값을 담은 scores[j]를 출력한다.

 

scores 변수 없이 임시 변수로 출력해도 무관하고, 코드 길이를 줄일 수도 있다.

 


도움이 되셨다면 좋아요 꾹!

728x90
반응형