공부하기/백준

[Java] 백준 풀기 2506 - 점수계산

XEV 2023. 6. 12. 23:45

자바 백준 2506번

브론즈 3

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

 

2506번: 점수계산

OX 문제는 맞거나 틀린 두 경우의 답을 가지는 문제를 말한다. 여러 개의 OX 문제로 만들어진 시험에서 연속적으로 답을 맞히는 경우에는 가산점을 주기 위해서 다음과 같이 점수 계산을 하기로

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현, 사칙연산

 

 

 

 

 

문제 풀기

총 문제의 개수를 입력 받고, 채점 결과를 array 에 입력 받는다.

계산된 점수와 연속으로 맞은 개수를 저장할 변수를 각각 초기화하여 생성한다.

 

채점 결과를 하나씩 빼내어 만약 1 이 나오면 지금까지 저장된 연속 맞은 개수를 하나 늘리고 이 값을 점수에 누적 합한다. 그렇지 않고 0 이 나오면 연속 맞은 개수를 0 으로 초기화시킨다. 이 과정을 for loop 를 통해 모든 답안의 순서에 따라 시행하고 최종 점수를 출력한다.

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 문제의 개수 입력
        int n = scanner.nextInt();
        
        // 채점 결과 입력
        int[] answers = new int[n];
        for (int i = 0; i < n; i++) {
            answers[i] = scanner.nextInt();
        }
        
        // 총 점수 계산 메서드
        int result = calcTotalScore(n, answers);
        
        // 총 점수 출력
        System.out.print(result); 
    }
    
    public static int calcTotalScore(int n, int[] answers) {
        int score = 0; // 총 점수 변수 초기화
        int consecutiveCorrect = 0; // 연속적으로 맞은 문제 수 변수 초기화
        
        for (int i = 0; i < n; i++) {
            if (answers[i] == 1) {
                // 문제의 답이 맞는 경우
                consecutiveCorrect++; // 연속적으로 맞은 문제 수 증가
                score += consecutiveCorrect; // 총 점수에 가산점 추가
            } else {
                // 문제의 답이 틀린 경우
                consecutiveCorrect = 0; // 연속적으로 맞은 문제 수 초기화
            }
        }
        
        return score;
    }
    
}