본문 바로가기
Algorithm

BOJ 2506

by Edward Agape Kim 2023. 4. 3.

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

 

2506번: 점수계산

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

www.acmicpc.net

score라는 변수를 0으로 초기화한다. 이것은 위 문제에서 원하는 값이 될 것이다.

n으로 문제의 개수를 받고, boolean 변수인 arr를 이용하여 문제에 대한 정답 여부를 저장한다.

반복문을 돌리면서 연속으로 문제를 맞추면 연속으로 k번 맞췄다는 가정하에 k점을 얻을 수 있다는 것을 이용하여 cnt의 값을 1 증가시킨 뒤 score 값을 업데이트 한다.

여기서 중요한 대목은 연속으로 맞춘다라는 것이다. 즉, 연속으로 맞춘 것이 아니라면 다시 맞춘 것의 점수는 1점으로 환원되어 계산된다는 것이다.

따라서 연속이 끊기는 지점, 틀리는 부분, 에서 cnt의 값을 0으로 다시 초기화한다.

 

아래는 이를 코드로 구현한 것이다.

#include <iostream>

using namespace std;

int score;
int n;
bool arr[101];

void input()
{
	scanf("%d", &n);
	for(int i=0; i<n; i++){
		scanf("%d", &arr[i]);
	}
}

void solve()
{
	int cnt = 0;
	
	for(int i=0; i<n; i++){
		if(arr[i]==true){
			cnt++;
			score += cnt;
		}
		else cnt = 0;
	}
}

int main()
{
	input();
	solve();
	
	printf("%d", score);
	
	return 0;
}

'Algorithm' 카테고리의 다른 글

BOJ 2477  (0) 2023.04.03
BOJ 14696  (0) 2023.04.03
Quiz7_구와 구의 충돌  (0) 2023.03.30
Quiz 7_원과 사각형의 충돌  (0) 2023.03.30
0/1 배낭 문제 (Knapsack Problem)  (0) 2022.12.22