문제

창영이와 상덕이는 게임을 하고 있다.

게임을 시작하는 시점에서, 두 사람의 점수는 모두 100점이다.

게임은 여섯 면 주사위를 사용하며, 라운드로 진행된다. 매 라운드마다, 각 사람은 주사위를 던진다. 낮은 숫자가 나온 사람은 상대편 주사위에 나온 숫자만큼 점수를 잃게 된다. 두 사람의 주사위가 같은 숫자가 나온 경우에는 아무도 점수를 잃지 않는다.

게임이 끝난 이후에 두 사람의 점수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 라운드의 수 n (1 ≤ n ≤ 15)가 주어진다. 다음 n개 줄에는 두 정수가 주어진다. 첫 번째 정수는 그 라운드에서 창영이의 주사위에 나타난 숫자, 두 번째 정수는 상덕이의 주사위에 나타난 숫자이다. 두 정수는 항상 1보다 크거나 같고, 6보다 작거나 같다.

출력

첫째 줄에 게임이 끝난 이후에 창영이의 점수, 둘째 줄에는 상덕이의 점수를 출력한다.

예제 입력 1

4
5 6
6 6
4 3
5 2

예제 출력 1

94
91

힌트

첫 라운드는 상덕이의 승리이다. 따라서 창영이는 6점을 잃게 된다. 두 번째 라운드는 두 사람의 숫자가 같기 때문에, 아무도 점수를 잃지 않고 넘어간다. 세 번째 라운드의 승자는 창영이이기 때문에, 상덕이는 4점을 잃게 된다. 마지막 라운드는 창영이가 승리하고, 상덕이는 5점을 잃게 된다. 따라서, 창영이는 6점, 상덕이는 9점을 잃었다.


더보기

Solution

#include<stdio.h>

int main(void)
{
	int n, CY, SD, score_C=100, score_S=100;

	scanf("%d", &n);

	for(int i=0;i<n;i++)
	{
		scanf("%d %d", &CY, &SD);

		if(CY<SD)
			score_C-=SD;
		else if(CY>SD)
			score_S-=CY;
	}

	printf("%d\n%d\n", score_C, score_S);
	return 0;
}
728x90

문제

꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B+ C를 계산할 차례이다!

입력

첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 10^12)이 공백을 사이에 두고 주어진다.

출력

A+B+C의 값을 출력한다.

예제 입력 1

77 77 7777

예제 출력 1

7931

더보기

Solution

#include<stdio.h>

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

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

	printf("%ld\n", A+B+C);
	return 0;
}
728x90

문제

두 정수 A와 B가 주어졌을 때, 두 정수 사이에 있는 수의 합을 구하는 프로그램을 작성하시오. 사이에 있는 수들은 A와 B도 포함한다.

입력

첫째 줄에 두 정수 A, B가 주어진다. (-2,147,483,648 ≤ A, B ≤ 2,147,483,647)

출력

첫째 줄에 답을 출력한다. (-2,147,483,648 ≤ 답 ≤ 2,147,483,647)

예제 입력 1

1 2

예제 출력 1

3

더보기

Solution

#include<stdio.h>

int main(void)
{
	long double A, B;

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

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

	printf("%.0Lf\n", (B-A)*(B-A+1)/2+(B-A+1)*A);
	return 0;
}
728x90

문제

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

예를 들어, 7개의 자연수 13, 78, 39, 42, 54, 93, 86가 주어지면 이들 중 짝수는 78, 42, 54, 86이므로 그 합은 78 + 42 + 54 + 86 = 260 이 되고, 42 < 54 < 78 < 86 이므로 짝수들 중 최솟값은 42가 된다.

입력

입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성되어 있고, 7개의 자연수가 공백으로 구분되어 있다. 입력으로 주어지는 자연수는 1보다 크거나 같고, 100보다 작거나 같다. 7개의 자연수 중 적어도 하나는 짝수이다.

출력

각 테스트 데이터에 대해, 7개 자연수 중 짝수의 합과 최솟값을 공백으로 구분하여 한 줄에 하나씩 출력한다.

예제 입력 1

2
1 2 3 4 5 6 7
13 78 39 42 54 93 86

예제 출력 1

12 2
260 42

더보기

Solution

#include<stdio.h>

int main(void)
{
	int T;

	scanf("%d", &T);

	for(int t=0;t<T;t++)
	{
		int sum=0, min=100, temp;

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

			if(temp%2==0)
			{
				sum+=temp;
				min=temp<min?temp:min;
			}
		}

		printf("%d %d\n", sum, min);
	}

	return 0;
}
728x90

문제

양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다. (1 ≤ T ≤ 10, 1 ≤ n ≤ 10^6)

출력

각 테스트 케이스에 대해서, 1의 위치를 공백으로 구분해서 줄 하나에 출력한다. 위치가 낮은 것부터 출력한다.

예제 입력 1

1
13

예제 출력 1

0 2 3

더보기

Solution

#include<stdio.h>

int main(void)
{
	int T;

	scanf("%d", &T);

	for(int t=0;t<T;t++)
	{
		int n;

		scanf("%d", &n);

		for(int i=0;n>0;i++,n/=2)
			if(n%2==1)
				printf("%d ", i);
		printf("\n");
	}

	return 0;
}
728x90

문제

짝이 없는 경재는 매일 홀로 있다보니 홀수를 판별할 수 있는 능력이 생겼다. 창식이는 경재의 말이 사실인지 그 능력을 시험해보려 한다. 창식이의 의심이 끝이 없을 것 같아 N개만 확인하기로 정했다.

N개의 정수가 주어지면 홀수인지 짝수인지를 출력하는 프로그램을 만들어 경재의 능력을 검증할 수 있게 도와주자.

입력

첫 번째 줄에 숫자의 개수 N(1 <= N <= 100)이 주어진다.

두 번째 줄부터 N+1번째 줄에 걸쳐 홀수인지 짝수인지 확인할 정수 K (1 <= K <= 10^60)가 주어진다.

출력

N개의 줄에 걸쳐 한 줄씩 정수 K가 홀수라면 'odd'를, 짝수라면 'even'을 출력한다.

예제 입력 1

2
1024
5931

예제 출력 1

even
odd

힌트

1024는 2로 나누어지므로 짝수이고, 5931은 그렇지 않으므로 홀수이다.


더보기

Solution

#include<stdio.h>
#include<string.h>

int main(void)
{
	int N;

	scanf("%d", &N);

	for(int n=0;n<N;n++)
	{
		char K[62]={'\0', };

		scanf("%s", K);
		printf("%s\n", K[strlen(K)-1]%2==0?"even":"odd");
	}

	return 0;
}
728x90

문제

해빈이는 학교를 다니면서 틈틈히 번 돈으로 자동차를 사려고 한다. 자동차에 여러 가지 옵션을 포함시킬 수 있는데 해빈이는 덧셈과 곱셈을 하지 못하기 때문에 친구 태완이에게 도움을 청했다. 하지만 태완이도 덧셈과 곱셈을 못한다. 불쌍한 이 두 친구를 위해 모든 옵션이 주어진 자동차를 구매하는데 필요한 액수를 계산해 주자.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다.

각 테스트 케이스의 첫 줄엔 자동차의 가격 s가 주어진다. (1 ≤ s ≤ 100 000)

둘째 줄엔 해빈이가 구매하려고 하는 서로 다른 옵션의 개수 n이 주어진다. (0 ≤ n ≤ 1 000)

뒤이어 n개의 줄이 입력으로 들어온다. 각 줄은 q 와 p로 이루어져 있는데 q는 해빈이가 사려고 하는 특정 옵션의 개수이고 p는 해당 옵션의 가격이다. (1 ≤ q ≤ 100, 1 ≤ p ≤ 10 000)

출력

각 테스트 케이스 마다, 해빈이가 최종적으로 구매하려는 자동차의 가격을 한줄씩 출력한다.

예제 입력 1

2
10000
2
1 2000
3 400
50000
0

예제 출력 1

13200
50000

더보기

Solution

#include<stdio.h>

int main(void)
{
	int T;

	scanf("%d", &T);

	for(int t=0;t<T;t++)
	{
		int s, n, total, q, p;

		scanf("%d", &s);
		scanf("%d", &n);
		total=s;

		for(int i=0;i<n;i++)
		{
			scanf("%d %d", &q, &p);
			total+=q*p;
		}

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

	return 0;
}
728x90

문제

부산일과학고등학교의 효진이는 수학의 귀재이다. 어떤 문제라도 보면 1분 내에 풀어버린다는 학교의 전설이 내려올 정도였는데, 이런 킹ㅡ갓 효진에게도 고민이 생겼다. 대부분의 문제에서 반복되는 연산이 있었기 때문이다! 이 연산은 너무 길어서 종이에 풀던 효진이는 너무 고통스러워서, 자신이 새로 연산자를 만들기로 했다.

연산자의 기호는 @으로, A@B = (A+B)×(A-B)으로 정의내리기로 했다.

하지만, 효진이는 막상 큰 숫자가 들어오자 계산하기 너무 귀찮아졌다.

효진이를 도와 정수 A, B가 주어지면 A@B를 계산하는 프로그램을 만들어주자!

입력

첫째 줄에 A, B가 주어진다. (1 ≤ A, B ≤ 100,000)

출력

 첫째 줄에 A@B의 결과를 출력한다.

서브태스크 1 (30점)

  • A, B ≤ 1,000

서브태스크 2 (70점)

문제에서 주어진 제약 조건 외 제한 없음

예제 입력 1

4 3

예제 출력 1

7

예제 입력 2

3 4

예제 출력 2

-7

더보기

Solution

#include<stdio.h>

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

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

	printf("%lld\n", (A+B)*(A-B));
	return 0;
}
728x90

+ Recent posts