[백준/BOJ]17224. APC는 왜 서브태스크 대회가 되었을까? [Bronze1]

jychan99·2021년 8월 24일
0
post-thumbnail
  1. APC는 왜 서브태스크 대회가 되었을까?

문제출처 : https://www.acmicpc.net/problem/17224

첫번째 시도에서 부분정답을 맞은 제출코드이다.

code

#include <stdio.h>
int main()
{
	//N = 문제 개수      L = 역량        K = 최대갯수
	int N, L, K, score = 0, i, sub1[100] = { 0 }, sub2[100] = { 0 };
	scanf("%d %d %d", &N, &L, &K);
	for (i = 0; i < N; i++)
		scanf("%d %d", &sub1[i], &sub2[i]);//풀수있는 최대갯수K가 정해져있는 상태라
	i = 0;                         //입력을 받아놓고 판단해야할거같애서 배열에 저장
	while (N)
	{
		if (K == 0)     //K가 0으로 주어지면 무조건 빠져나오게 먼저break를 걸어줬다
			break;
		if (sub2[i] <= L)   //난이도 높은문제를 풀 수 있으면 난이도 쉬운것도 풀수 있으므로
		{                            //먼저 판단해서 140점을 더해준다
			score += 140;
			K--;
		}
		else if (sub1[i] <= L)    //난이도 높은문제를 못풀지만, 낮은 난이도문제를 풀수있으면
		{                                    // 100점을 더해준다
			score += 100;
			K--;
		}
		i++;
		N--; //문제갯수 --
	}
	printf("%d", score);
	return 0;
}

두번째시도에서 완전히 정답을 맞은 제출코드이다.

code

#include <stdio.h>
int main()
{
	//N = 문제 개수      L = 역량        K = 최대갯수
	int N, L, K, score = 0, i, sub1[100] = { 0 }, sub2[100] = { 0 };
	scanf("%d %d %d", &N, &L, &K);
	for (i = 0; i < N; i++)
		scanf("%d %d", &sub1[i], &sub2[i]);         //이까지는 동일하다.
	for (i = 0; i < N; i++)   //첫번째 시도에서 부분정답을 맞은이유는 배열을 처음부터 돌면서
	{                         //판단을 하다보니, 미처 못세아리고 최대갯수를 초과해서 세지못한
		if (K == 0)         //난이도높은 문제가 있기 때문이다.
			break;
		if (sub2[i] <= L)                  
		{
			score += 140; //그래서 아에 난이도 높은문제부터 쫙돌면서 140점을 더해준다
			K--;
		}
	}
	for (i = 0; i < N; i++)
	{
		if (K == 0)
			break;
		if (sub1[i] <= L && sub2[i] > L)   //그다음에 남은문제갯수만큼 난이도 낮은문제 100
		{                                                    //점을 더해준다.
			score += 100;
			K--;
		}
	}
	printf("%d", score);
	return 0;
}

이제 대충 백준 한글로된 그리디알고리즘 브론즈문제는 모두풀었다. (미제도 있지만...)
감히내가 판단하기는 염치없으나 실버5로 진급할때가 됐다ㅋㅋㅋ
다음 백준그리디알고리즘은 실버5문제로 돌아오겠다

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글