반응형
Approach
출처: https://www.acmicpc.net/problem/2506
[BOJ] 2495 연속구간 문제에서 조금 발전한 문제라고 볼 수 있다.
연속되는 만큼 더해지는 값들이 +1씩 누적되는데
for문을 탐색하면서 이겼을 경우, 이전 결과에 따라 더해지는 점수를 처리한다.
→ 이전에도 이긴경우 +1씩 누적해서 합산
만약에 지게되는 경우에는 연속성이 끊어지는 것이므로
더해지는 (누적)값을 0 으로 처리
C++
#include <stdio.h>
const int MAX_N = 100;
char str[MAX_N];
int ans, N, val, sum;
int main()
{
// freopen("input.txt", "r", stdin);
scanf("%d", &N);
scanf("%d", &val); // 시작 점수
ans = sum = val;
for (int i = 1; i < N; ++i)
{
scanf("%d", &val); // 점수
// 연속해서 이긴 경우
if (val == 1)
{
sum++;
ans += sum;
}
// 중간에 진 경우 (연속성 X)
else if (val == 0)
{
sum = 0;
}
}
printf("%d\n", ans);
}
Java
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
int result = 0;
int count = 1;
int flag = 0;
for(int i=0; i<n; i++){
arr[i] = sc.nextInt();
if(arr[i] == 1)
{
if(flag == 1){
count++;
result = result + count;
}
else{
result = result + 1;
}
flag = 1;
}
else
{
count = 1;
flag = 0;
}
}
System.out.println(result);
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 2588 곱셈 (0) | 2022.01.11 |
---|---|
[BOJ] 백준 2566 최댓값 (1) | 2022.01.10 |
[BOJ] 백준 2495 연속구간 (0) | 2022.01.07 |
[BOJ] 백준 2490 윷놀이 (0) | 2022.01.06 |
[BOJ] 백준 2460 지능형 기차 2 (0) | 2022.01.05 |
댓글