자바/백준

[백준 2506] 점수계산

슈슈버거 2024. 8. 16. 01:34

문제

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

 


내가 작성한 코드

import java.util.*;
import java.io.*;

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

        int N = Integer.parseInt(br.readLine());

        int score[] = new int[N];
        int add = 1;
        int result = 0;

        String[] inputs = br.readLine().split(" ");

        for (int i = 0; i < N; i++) {
            score[i] = Integer.parseInt(inputs[i]);

            if (i > 0 && score[i-1] == 1) {
                add++;
            } else {
                add = 1;
            }

            result += score[i] * add;
        }

        System.out.println(result);
    }
}

 

이 문제의 핵심은 연속되는 숫자인지를 파악할 수 있냐가 아니었을까 싶다

단순히 정해진 수의 숫자를 받아와 총합을 출력하는 것이라면 매우 쉬웠을 거다.

 

1. 점수 계산 배열, 가산점 배열 따로 생성

> 이걸 맨 처음에 생각했었는데 배열 2개를 생성하는 과정을 거친 후에 다시 for문을 돌며

배열의 값을 총합으로 전환하는 것보다는

 

2. 점수 배열에 저장함과 동시에 가산점 계산

> 이게 나을 거라고 생각했다.

점수 배열을 만들어주는 이유는 배열에 저장이 되어 있어야 가산점 여부를 파악할 수 있을 것이라 생각해서다.

 

만약 아예 배열을 만들지 않는 방법이 있다면 더 좋지 않을까 싶긴 하다

다음에 배열은 입력값 1개만 만드는 방법으로 진행해봐야겠다

적으면서 느낀 건데 굳이 int형 배열은 만들 필요가 없다는 걸 깨달았다

어차피 String 배열을 int형으로만 바꿔주는 역할이니까

 

다음에 코드를 더 간소화시켜봐야겠다

'자바 > 백준' 카테고리의 다른 글

[백준 1672] DNA 해독  (0) 2024.08.16
[백준 9076] 점수 집계  (0) 2024.08.16
[백준 10798] 세로읽기  (0) 2024.08.16
[백준 1032] 명령 프롬프트  (0) 2024.08.16
[백준 1620] 나는야 포켓몬 마스터  (0) 2024.08.07