문제

상근이는 초등학교에 다닐 때, 방학 숙제를 남들보다 먼저 미리 하고 남은 기간을 놀았다. 방학 숙제는 수학과 국어 문제 풀기이다.

방학은 총 L일이다. 수학은 총 B페이지, 국어는 총 A페이지를 풀어야 한다. 상근이는 하루에 국어를 최대 C페이지, 수학을 최대 D페이지 풀 수 있다.

상근이가 겨울 방학동안 숙제를 하지 않고 놀 수 있는 최대 날의 수를 구하는 프로그램을 작성하시오.

입력

한 줄에 하나씩 총 다섯 줄에 걸쳐 L, A, B, C, D가 주어진다. (2 ≤ L ≤ 40, 1 ≤ A, B ≤ 1000, 1 ≤ C, D ≤ 100)

항상 방학 숙제를 방학 기간내에 다 할 수 있는 경우만 입력으로 주어진다.

출력

첫째 줄에 상근이가 놀 수 있는 날의 최댓값을 출력한다.

예제 입력 1

20
25
30
6
8

예제 출력 1

15

더보기

Solution

#include<stdio.h>

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

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

	A=A%C==0?A/C:A/C+1;
	B=B%D==0?B/D:B/D+1;

	printf("%d\n", A>B?L-A:L-B);

	return 0;
}
728x90

문제

상근이는 TGN사의 사장이다. TGN은 Teenager Game Network의 약자 같지만, 사실 Temporary Group Name의 약자이다.

이 회사는 청소년을 위한 앱을 만드는 회사이다. 일년에 걸친 개발기간 끝에 드디어 앱을 완성했고, 이제 팔기만 하면 된다.

상근이는 데이트를 인간의 두뇌로 이해할 수 없을 정도로 많이 한다. 따라서 엄청난 데이트 비용이 필요하다. 상근이는 광고를 적절히 해서 수익을 최대한 올리려고 한다.

어느 날 하늘을 바라보던 상근이는 시리우스의 기운을 받게 되었고, 광고 효과를 예측하는 능력을 갖게 되었다.

광고 효과가 주어졌을 때, 광고를 해야할지 말아야할지 결정하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 N이 주어진다. 다음 N개의 줄에는 3개의 정수 r, e, c가 주어진다. r은 광고를 하지 않았을 때 수익, e는 광고를 했을 때의 수익, c는 광고 비용이다. (-106 ≤ r,e ≤ 106, 0 ≤ c ≤ 106)

출력

각 테스트 케이스에 대해서, 광고를 해야 하면 "advertise", 하지 않아야 하면 "do not advertise", 광고를 해도 수익이 차이가 없다면 "does not matter"를 출력한다.

예제 입력 1

3
0 100 70
100 130 30
-100 -70 40

예제 출력 1

advertise
does not matter
do not advertise

더보기

Solution

#include<stdio.h>

int main(void)
{
	int N;

	scanf("%d", &N);

	for(int i=0;i<N;i++)
	{
		int r, e, c;

		scanf("%d %d %d", &r, &e, &c);

		printf("%s\n", r>e-c?"do not advertise":r<e-c?"advertise":"does not matter");
	}

	return 0;
}
728x90

문제

상근이는 등차수열을 이루는 정수 4개를 골랐다. 이것은 상근이가 고른 수 4개를 정렬했을 때, 인접한 쌍의 차이가 일정하다는 것을 의미한다. 그 다음 이렇게 고른 숫자 4개를 노래로 만들어서 외우고 다닌다.

어느 날, 상근이는 자신이 고른 4개 숫자 중 1개를 까먹었다. 

상근이가 고른 네 개의 숫자 중 세 개가 주어졌을 때, 네 번째 숫자를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 상근이가 고른 네 개의 숫자 중 세 개가 주어진다. 이 숫자는 크기 순이 아닐 수도 있고, -100보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력

첫째 줄에 네 번째 숫자를 출력한다. 정답이 여러 개일 경우에는 아무거나 출력하면 된다. 또한 정답이 존재하지 않는 경우는 입력으로 주어지지 않는다.

예제 입력 1

4 6 8

예제 출력 1

10

더보기

Solution

#include<stdio.h>

int main(void)
{
	int num[3];

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

	for(int i=0;i<2;i++)
		for(int j=i+1;j<3;j++)
			if(num[i]>num[j])
			{
				int temp=num[i];
				num[i]=num[j];
				num[j]=temp;
			}

	if(2*num[1]>num[0]+num[2])
		printf("%d\n", 2*num[1]-num[2]);
	else if(2*num[1]<num[0]+num[2])
		printf("%d\n", 2*num[1]-num[0]);
	else
		printf("%d\n", 2*num[2]-num[1]);

	return 0;
}
728x90

문제

7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최솟값을 찾는 프로그램을 작성하시오.

예를 들어, 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지면 이들 중 홀수는 77, 41, 53, 85이므로 그 합은

77 + 41 + 53 + 85 = 256

이 되고,

41 < 53 < 77 < 85

이므로 홀수들 중 최솟값은 41이 된다.

입력

입력의 첫째 줄부터 일곱 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100보다 작다.

출력

홀수가 존재하지 않는 경우에는 첫째 줄에 -1을 출력한다. 홀수가 존재하는 경우 첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최솟값을 출력한다.

예제 입력 1

12
77
38
41
53
92
85

예제 출력 1

256
41

예제 입력 2

2
4
20
32
6
10
8

예제 출력 2

-1

더보기

Solution

#include<stdio.h>

int main(void)
{
	int num[7], sum=0, min=100;

	for(int i=0;i<7;i++)
	{
		scanf("%d", &num[i]);

		if(num[i]%2==1)
		{
			sum+=num[i];
			min=num[i]<min?num[i]:min;
		}
	}

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

	return 0;
}
728x90

문제

세 수 A, B, C가 주어진다. A는 B보다 작고, B는 C보다 작다.

세 수 A, B, C가 주어졌을 때, 입력에서 주어진 순서대로 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 세 수 A, B, C가 주어진다. 하지만, 순서는 A, B, C가 아닐 수도 있다. 세 수는 100보다 작거나 같은 자연수이다. 둘째 줄에는 A, B, C로 이루어진 세 글자가 주어지며, 이 순서대로 출력하면 된다.

출력

주어진 세 수를 주어진 출력 순서대로 출력하면 된다.

예제 입력 1

1 5 3
ABC

예제 출력 1

1 3 5

더보기

Solution

#include<stdio.h>

int main(void)
{
	int num[3];
	char str[4]={'\0', };

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

	for(int i=0;i<2;i++)
		for(int j=i+1;j<3;j++)
			if(num[i]>num[j])
			{
				int temp=num[i];
				num[i]=num[j];
				num[j]=temp;
			}

	scanf("%s", str);

	for(int i=0;i<3;i++)
		printf("%d ", str[i]=='A'?num[0]:str[i]=='B'?num[1]:num[2]);
	printf("\n");

	return 0;
}
728x90

문제

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은

가 된다.

 

평균 이외의 또 다른 대표값으로 중앙값이라는 것이 있다. 중앙값은 주어진 수를 크기 순서대로 늘어 놓았을 때 가장 중앙에 놓인 값이다. 예를 들어 10, 40, 30, 60, 30의 경우, 크기 순서대로 늘어 놓으면

10 30 30 40 60

이 되고 따라서 중앙값은 30 이 된다.

다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오.

입력

첫째 줄부터 다섯 번째 줄까지 한 줄에 하나씩 자연수가 주어진다. 주어지는 자연수는 100 보다 작은 10 의 배수이다.

출력

첫째 줄에는 평균을 출력하고, 둘째 줄에는 중앙값을 출력한다. 평균과 중앙값은 모두 자연수이다.

예제 입력 1

10
40
30
60
30

예제 출력 1

34
30

더보기

Solution

#include<stdio.h>

int main(void)
{
	int num[5], avr=0;

	for(int i=0;i<5;i++)
	{
		scanf("%d", &num[i]);
		avr+=num[i];
	}
	avr/=5;

	for(int i=0;i<4;i++)
		for(int j=i+1;j<5;j++)
			if(num[i]<num[j])
			{
				int temp=num[i];
				num[i]=num[j];
				num[j]=temp;
			}

	printf("%d\n%d\n", avr, num[2]);

	return 0;
}
728x90

문제

이 문제를 만든 사람의 생일을 출력하시오.

출력

월/일 형식으로 출력하면 된다. 예를 들어, 7월 4일인 경우에는 7/4, 9월 20일인 경우에는 9/20, 11월 4일인 경우에는 11/4와 같이 출력하면 된다.


더보기

Solution

#include<stdio.h>

int main(void)
{
	printf("10/14\n");

	return 0;
}
728x90

문제

서강대학교 곤자가 기숙사의 지하에는 n개의 방이 일렬로 늘어선 감옥이 있다. 각 방에는 벌점을 많이 받은 학생이 구금되어있다.

그러던 어느 날, 감옥 간수인 상범이는 지루한 나머지 정신나간 게임을 하기로 결정했다. 게임의 첫 번째 라운드에서 상범이는 위스키를 한 잔 들이키고, 달려가며 감옥을 한 개씩 모두 연다. 그 다음 라운드에서는 2, 4, 6, ... 번 방을 다시 잠그고, 세 번째 라운드에서는 3, 6, 9, ... 번 방이 열려있으면 잠그고, 잠겨있다면 연다. k번째 라운드에서는 번호가 k의 배수인 방이 열려 있으면 잠그고, 잠겨 있다면 연다. 이렇게 n번째 라운드까지 진행한 이후, 상범이는 위스키의 마지막 병을 마시고 쓰러져 잠든다.

구금되어있는 몇 명(어쩌면 0명)의 학생들은 자신의 방을 잠그지 않은 채 상범이가 쓰러져버렸단 것을 깨닫고 즉시 도망친다.

방의 개수가 주어졌을 때, 몇 명의 학생들이 도주할 수 있는지 알아보자.

입력

입력의 첫 번째 줄에는 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄에 한 개씩 방의 개수 n(5 ≤ n ≤ 100)이 주어진다.

출력

한 줄에 한 개씩 각 테스트 케이스의 답, 즉 몇 명이 탈출할 수 있는지를 출력한다.

예제 입력 1

2
5
100

예제 출력 1

2
10

더보기

Solution

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

int main(void)
{
	int T;

	scanf("%d", &T);

	for(int i=0;i<T;i++)
	{
		int n, *room=NULL, count=0;

		scanf("%d", &n);
		room=(int *)calloc(n+1,sizeof(int));

		for(int j=1;j<=n;j++)
			for(int k=j;k<=n;k+=j)
				room[k]++;

		for(int j=1;j<=n;j++)
			count+=room[j]%2;

		free(room);
		printf("%d\n", count);
	}

	return 0;
}
728x90

+ Recent posts