문제
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 |