Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 점수계산 (2506) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 점수계산 (2506) (자바/Java)

luke-king 2024. 6. 10. 22:01

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int jum = 0;
        int sum = 0;
        for (int i = 0; i < n; i++) {
            int answer = sc.nextInt();

            if (answer == 1) {
                sum += answer + jum;
                jum++;
            }
            if (answer == 0) {
                jum = 0;
            }

        }

        System.out.println(sum);

    }

}

 

오늘 문제는 백준 "점수계산"이다.

큰 어려움 없는 문제다. 이번 문제 풀이를 하자면 점수를 맞추면 1점 그 외에 연속적으로 맞추게 된다면 2 연속 정답부터 1점, 2점, 3점씩 더해 합을 구하는 문제다. 그럼 풀이를 해보겠다.

 

1. 변수 jum은 연속적인 정답을 맞힐 경우 증가연산자를 사용해 더해주는 변수다. sum은 총합을 담을 변수다.

 

2. n만큼 반복문을 실행해 준다.

 

3. 첫 번째 조건식은  입력값(answer) 이 1 일경우 sum 변수에 answer + jum (1 + 0)을 해준다. 여기까지는 어렵지 않을 것이다.

 

4. 연속적으로 나타났을 경우 jum++은 두 번째 연속되는 1에서 jum 은 1이 되므로 2가 되고 3번째 연속되는 jum은 2가되어 3점이다 이렇게 연속적인 답 일경우 문제 조건에 맞게 더해준다.

 

5. 두번째 조건식인 입력값이 0 일경우 jum을 0으로 초기화해준다. 그 이유는 초기화해주지 않을 경우

1, 0, 0, 1을 입력했을 때 jum++ 때문에 2점이 아닌 3점이 출력된다. 그러므로 0이 나온다면 jum을 0으로 초기화해줘야 한다.