문제

준희는 자기가 팀에서 귀여움을 담당하고 있다고 생각한다. 하지만 연수가 볼 때 그 의견은 뭔가 좀 잘못된 것 같았다. 그렇기에 설문조사를 하여 준희가 귀여운지 아닌지 알아보기로 했다.

입력

첫 번째 줄에 설문조사를 한 사람의 수 N (1 ≤ N ≤ 101, N은 홀수)가 주어진다.

다음 N개의 줄에는 각 줄마다 각 사람이 설문 조사에 어떤 의견을 표명했는지를 나타내는 정수가 주어진다. 0은 준희가 귀엽지 않다고 했다는 뜻이고, 1은 준희가 귀엽다고 했다는 뜻이다.

출력

준희가 귀엽지 않다는 의견이 더 많을 경우 "Junhee is not cute!"를 출력하고 귀엽다는 의견이 많을 경우 "Junhee is cute!"를 출력하라.

예제 입력 1

3
1
0
0

예제 출력 1

Junhee is not cute!

힌트

팀 내에서 설문조사를 진행하면 아마 위와 같은 결과를 얻게 될 것이다.


더보기

Solution

#include<stdio.h>

int main(void)
{
	int N, count=0, vote;

	scanf("%d", &N);

	for(int i=0;i<N;i++)
	{
		scanf("%d", &vote);

		count+=vote==0?-1:1;
	}

	printf("%s\n", count>0?"Junhee is cute!":"Junhee is not cute!");

	return 0;
}
728x90

문제

게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자. 

입력

첫 번째 줄에 학기의 수 T가 주어진다. 두 번째 줄부터 T개 학기에 대한 정보가 주어진다.

각 학기에 대한 정보는 다음과 같이 구성되어 있다. 첫 번째 줄에 들었던 과목의 수 N이 주어지고, 다음 N개 줄에 걸쳐서 N개 과목들의 학점 C와 성적 G가 주어진다. (1 ≤ N ≤ 10, 1 ≤ C ≤ 6, C는 정수) G는 {0, 0.7, 1, 1.3, 1.7, 2, 2.3, 2.7, 3, 3.3, 3.7, 4, 4.3} 중 하나이며 소수 부분은 최대 한 자리까지 주어진다.

출력

각 학기에 대해 근우의 총 학점과 평점(GPA)을 출력한다. 정답과의 절대 오차는 10^(-1)까지 허용한다.

예제 입력 1

2
4
3 4.3
2 2.0
4 0.0
2 4.0
3
4 0.0
4 0.0
3 0.0

예제 출력 1

11 2.3
11 0.0

예제 입력 2

2
4
3 4.3
2 2
4 0.0
2 4.0
3
4 0.0
4 0
3 0

예제 출력 2

11 2.3
11 0.0

더보기

Solution

#include<stdio.h>

int main(void)
{
	int T;

	scanf("%d", &T);

	for(int i=0;i<T;i++)
	{
		int N, C, total=0;
		float  G, GPA=0.0;

		scanf("%d", &N);

		for(int j=0;j<N;j++)
		{
			scanf("%d %f", &C, &G);

			total+=C;
			GPA+=C*G;
		}

		GPA/=total;

		printf("%d %.1f\n", total, GPA);
	}

	return 0;
}
728x90

문제

OX 문제는 맞거나 틀린 두 경우의 답을 가지는 문제를 말한다. 여러 개의 OX 문제로 만들어진 시험에서 연속적으로 답을 맞히는 경우에는 가산점을 주기 위해서 다음과 같이 점수 계산을 하기로 하였다. 1번 문제가 맞는 경우에는 1점으로 계산한다. 앞의 문제에 대해서는 답을 틀리다가 답이 맞는 처음 문제는 1점으로 계산한다. 또한, 연속으로 문제의 답이 맞는 경우에서 두 번째 문제는 2점, 세 번째 문제는 3점, ..., K번째 문제는 K점으로 계산한다. 틀린 문제는 0점으로 계산한다.

예를 들어, 아래와 같이 10 개의 OX 문제에서 답이 맞은 문제의 경우에는 1로 표시하고, 틀린 경우에는 0으로 표시하였을 때, 점수 계산은 아래 표와 같이 계산되어, 총 점수는 1+1+2+3+1+2=10 점이다.

시험문제의 채점 결과가 주어졌을 때, 총 점수를 계산하는 프로그램을 작성하시오.

입력

첫째 줄에 문제의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 N개 문제의 채점 결과를 나타내는 0 혹은 1이 빈 칸을 사이에 두고 주어진다. 0은 문제의 답이 틀린 경우이고, 1은 문제의 답이 맞는 경우이다. 

출력

첫째 줄에 입력에서 주어진 채점 결과에 대하여 가산점을 고려한 총 점수를 출력한다. 

예제 입력 1

10
1 0 1 1 1 0 0 1 1 0

예제 출력 1

10

더보기

Solution

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int N, *score=NULL, sum=0;

	scanf("%d", &N);
	score=(int *)malloc(N*sizeof(int));

	for(int i=0;i<N;i++)
		scanf("%d", &score[i]);

	for(int i=1;i<N;i++)
		if(score[i-1]*score[i]!=0)
			score[i]=score[i-1]+1;

	for(int i=0;i<N;i++)
		sum+=score[i];
	printf("%d\n", sum);

	free(score);
	return 0;
}
728x90

문제

KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다. 

또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

입력

첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0<=A<=23) 와 분 B (0<=B<=59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0<=C<=1,000)가 분 단위로 주어진다. 

출력

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

예제 입력 1

14 30
20

예제 출력 1

14 50

더보기

Solution

#include<stdio.h>

int main(void)
{
	int A, B, C;

	scanf("%d %d", &A, &B);
	scanf("%d", &C);

	B+=C;

	while(B>=60)
	{
		A++;
		B-=60;
	}
	A%=24;

	printf("%d %d\n", A, B);

	return 0;
}
728x90

문제

수직선에 n개의 점이 찍혀 있다. 각각의 점의 x좌표가 주어졌을 때, n2개의 모든 쌍에 대해서 거리를 더한 값을 구하는 프로그램을 작성하시오.

즉, 모든 i, j에 대해서 |x[i] - x[j]|의 합을 구하는 것이다.

입력

첫째 줄에 n(1 ≤ n ≤ 10,000)이 주어진다. 다음 줄에는 x[1], x[2], x[3], …, x[n]이 주어진다. 각각은 0 이상 1,000,000,000 이하의 정수이다.

출력

첫째 줄에 답을 출력한다.

예제 입력 1

5
1 5 3 2 4

예제 출력 1

40

더보기

Solution

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(void)
{
	unsigned long long int n, *x=NULL, sum=0;

	scanf("%llu", &n);
	x=(unsigned long long int *)malloc(n*sizeof(unsigned long long int));

	for(int i=0;i<n;i++)
		scanf("%llu", &x[i]);

	for(int i=0;i<n-1;i++)
		for(int j=i+1;j<n;j++)
			sum+=2*abs(x[i]-x[j]);

	printf("%llu\n", sum);

	free(x);
	return 0;
}
728x90

문제

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64,  81,  100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다.

입력

첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10000이하의 자연수이며 M은 N보다 같거나 작다.

출력

M이상 N이하의 자연수 중 완전제곱수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 완전제곱수가 없을 경우는 첫째 줄에 -1을 출력한다.

예제 입력 1

60
100

예제 출력 1

245
64

예제 입력 2

75
80

예제 출력 2

-1

더보기

Solution

#include<stdio.h>

int main(void)
{
	int M, N, sum=0, min=10000;

	scanf("%d", &M);
	scanf("%d", &N);

	for(int i=1;i*i<=N;i++)
		if(i*i>=M)
		{
			sum+=i*i;
			min=i*i<min?i*i:min;
		}

	if(sum==0)
		printf("-1\n");
	else
		printf("%d\n%d\n", sum, min);

	return 0;
}
728x90

문제

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다.

두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000)

출력

첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다.

예제 입력 1

3
1 45000
6 10
13 17

예제 출력 1

45000
30
221

더보기

Solution

#include<stdio.h>

int main(void)
{
	int T;

	scanf("%d", &T);

	for(int i=0;i<T;i++)
	{
		int A, B, temp;

		scanf("%d %d", &A, &B);

		if(A>B)
		{
			temp=A;
			A=B;
			B=temp;
		}
		temp=B;

		while(temp%A!=0)
			temp+=B;

		printf("%d\n", temp);
	}

	return 0;
}
728x90

문제

오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

출력

첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.

예제 입력 1

1 1

예제 출력 1

MON

예제 입력 2

3 14

예제 출력 2

WED

예제 입력 3

9 2

예제 출력 3

SUN

예제 입력 4

12 25

예제 출력 4

TUE

더보기

Solution

#include<stdio.h>

int main(void)
{
	int x, y;

	scanf("%d %d", &x, &y);

	for(int i=1;i<x;i++)
		switch(i)
		{
			case 2:
					y+=28;
					break;
			case 4:
			case 6:
			case 9:
			case 11:
					y+=30;
					break;
			default:
					y+=31;
					break;
		}

	switch(y%7)
	{
		case 0:
				printf("SUN\n");
				break;
		case 1:
				printf("MON\n");
				break;
		case 2:
				printf("TUE\n");
				break;
		case 3:
				printf("WED\n");
				break;
		case 4:
				printf("THU\n");
				break;
		case 5:
				printf("FRI\n");
				break;
		case 6:
				printf("SAT\n");
				break;
	}

	return 0;
}
728x90

+ Recent posts