[Bronze II] 풀만한문제 - 29716

문제 링크

성능 요약

메모리: 1112 KB, 시간: 0 ms

분류

수학, 구현, 문자열

제출 일자

2024년 10월 2일 23:37:14

문제 설명

여름에는 잡초가 많이 자란다.

브실마을에 사는 사람들은 이번 여름 장맛비로 인해 갑자기 훌쩍 커 버린 잡초 때문에 고생하고 있다. 브실마을의 밭에서는 탐스러운 PS 문제들이 자라고 있는데, 잡초에 가려서 문제가 보이지 않게 되기 때문이다.

영어 대소문자와 공백, 숫자로 이루어진 PS 문제의 크기는 각 문제에 포함된 문자의 크기 합으로 정해진다. 대문자의 크기는 $4$, 숫자와 소문자의 크기는 $2$, 공백의 크기는 $1$이다.

이번 브실컵에 내야 하는 문제들을 수확하려던 비행씨의 밭에도 어느새 잡초가 무성하게 자라 버렸다. 코 앞까지 다가온 마감에 골머리를 앓던 비행씨는 잡초를 뽑기 전에, 먼저 잡초보다 더 크게 자란 문제들을 수확해서 내기로 했다. 수확하지 못한 문제들은 다음 대회를 위해 더 키워질 예정이다.

시간이 없는 비행씨를 위해 잡초보다 크기가 크지 않은, 풀만한문제들의 수를 알려 주는 프로그램을 만들어 주자.

입력

첫 번째 줄에 잡초의 크기 $J$와 자라고 있는 문제의 수 $N$이 공백으로 구분되어 주어진다. $(1\le J, N \le 500)$

두 번째 줄부터 $N$개 줄에 걸쳐, 영어 대소문자와 숫자 및 공백으로 이루어진 문제들이 한 줄에 하나씩 주어진다. 문제의 길이는 $1$ 이상 $100$ 이하이며, 공백으로 시작되거나 끝나지 않는다.

출력

풀만한문제의 수를 출력한다.


💡 해결 방법

💻 코드

#include <stdio.h>
#include <stdlib.h>
 
int check(char arr[])
{
	int sum = 0;
	for (int a = 0; arr[a] != '\0'; a++)
	{
		if (('A' <= arr[a] && arr[a] <= 'Z'))
			sum += 4;
		else if (('0' <= arr[a] && arr[a] <= '9') || ('a' <= arr[a] && arr[a] <= 'z'))
			sum += 2;
		else if (' ' == arr[a])
			sum += 1;
	}
	return sum;
}
 
	int main(int argc, char *argv[])
	{
		int J, N;
		scanf("%d %d", &J, &N);
		char arr1[100];
		int ans = 0;
		for (int a = 0; a < N; a++)
		{
			scanf(" %[^\n]", arr1);
			if(J >= check(arr1)) 
				ans++;
		}
		printf("%d", ans);
		
		return 0;
		
	}