suheang

[백준] | JAVA, 자바 | 2506번 - 점수계산 본문

알고리즘

[백준] | JAVA, 자바 | 2506번 - 점수계산

suheang 2024. 6. 19. 22:05

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

 


문제 요약 :

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

예를 들어, 아래와 같이 10 개의 OX 문제에서 답이 맞은 문제의 경우에는 1로 표시하고, 틀린 경우에는 0으로 표시하였을 때, 점수 계산은 아래 표와 같이 계산되어, 총 점수는 1+1+2+3+1+2=10 점이다.

( 시험문제의 채점 결과가 주어졌을 때, 총 점수를 계산하는 프로그램을 작성 )


문제 풀이 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int[] number = new int[n];

        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            number[i] = Integer.parseInt(st.nextToken());
        }

        int sum = 0;
        if (number[0] == 1) {
            sum = 1;
        } else {
            sum = 0;
        }

        int count = 1;
        for (int i = 1; i < number.length; i++) {
            if (number[i] == 1) {
                if (number[i - 1] == 1) {
                    count++;
                }
                sum += 1 * count;
            } else {
                count = 1;
            }
        }
        System.out.println(sum);
    }
}

 

1. 문제의 개수 n 개 입력받기

2. n 개의 크기를 가지고 있는 배열 number 생성, n 개 만큼 채점 결과 입력받기

3. 점수를 계산할 변수 sum 생성, number[0]에 있는 수가 1이라면 sum의 값을 1, 0이라면 sum의 값을 0으로 설정

4. 배열 number에 있는 값들을 비교하면서 그전의 값이 1이면 count 증가

5. i 번째 채점 결과가 1이라면 1 * count 값을 sum에 더하고 그렇지 않다면 count를 1로 설정

6. 계산된 sum 출력