문제

넥슨지티에서는 최근 SRPG "슈퍼 판타지 워"의 후속작으로 "미니 판타지 워"를 출시하였다. 전편과 마찬가지로, 미니 판타지 워에서도 각 캐릭터의 전투력을 계산하여야 한다. 각 캐릭터의 전투력은 단순히 각 캐릭터의 능력치의 가중 합으로 계산된다. 전투력 계산은 굉장히 간단한 로직이지만 게임 곳곳에 쓰이는 만큼, Being은 다른 프로그래머로 하여금 이 로직을 구현하여 자신의 것과 교차검증하고자 한다. 그리하여 당신은 이 전투력을 구현하는 작업을 맡게 되었다.

능력치는 모두 네 종류 존재한다. 이는 각각 HP, MP, 공격력, 방어력이다. 각 캐릭터는 기본 능력치 4종을 바탕으로 장비를 장착할 수 있다. 각 장비는 능력치를 변화시키는데, 그 변화되는 양이 입력으로 주어진다. 따라서 캐릭터의 최종 능력치는 기본 능력치와 장비 능력치의 합으로 구성된다. 단, HP와 MP는 1보다 작은 경우 1로 간주하며, 공격력은 0보다 작은 경우 0으로 간주한다. 방어력은 음수 여부에 상관하지 않는다.

결정된 능력치에 따른 캐릭터의 최종 전투력은 아래와 같다:

전투력 = 1 * (HP) + 5 * (MP) + 2 * (공격력) + 2 * (방어력)

각 캐릭터의 기본 능력치와 장비에 의해 변화되는 능력치의 증감량이 주어질 때, 최종 전투력을 구하는 프로그램을 작성하여라.

입력

입력의 첫 줄에는 능력치를 계산하여야 하는 캐릭터의 수, 또는 테스트 케이스의 수 T (1 ≤ T ≤ 1000) 가 주어진다.

다음 T 행에 걸쳐 각각 8개의 정수가 주어진다. 처음 네 개의 정수는 각각 캐릭터의 기본 HP, MP, 공격력, 방어력이다. 이 값들은 1 이상 999 이하로 주어진다. 다음 네 개의 정수는 각각 캐릭터의 장비에 의해 증감되는 HP, MP, 공격력, 방어력이다. 이 값들은 -999 이상 999 이하로 주어진다.

출력

각 캐릭터, 즉 각 테스트 케이스마다 한 줄에 하나씩 캐릭터의 최종 전투력을 출력한다.

예제 입력 1

3
100 100 100 100 0 0 0 0
10 20 30 40 40 30 20 10
100 100 100 100 -200 0 400 400

예제 출력 1

1000
500
2501

더보기

Solution

#include<stdio.h>

int main(void)
{
	int T;

	scanf("%d", &T);

	for(int t=0;t<T;t++)
	{
		int ability[2][4];

		for(int i=0;i<2;i++)
			for(int j=0;j<4;j++)
				scanf("%d", &ability[i][j]);

		for(int i=0;i<4;i++)
		{
			ability[0][i]+=ability[1][i];

			if(i<2)
				ability[0][i]=ability[0][i]<1?1:ability[0][i];
			else if(i==2)
				ability[0][i]=ability[0][i]<0?0:ability[0][i];
		}

		printf("%d\n", ability[0][0]+5*ability[0][1]+2*(ability[0][2]+ability[0][3]));
	}

	return 0;
}
728x90

문제

다음은 고려대학교 포털에 나와 있는 고대 와인에 대한 글 일부이다.

개교 100주년 공식 와인 ‘라 까르돈느(La Cardonne) 2000년’의 뒤를 잇는 우당 박종구 회장 기부 와인 ’나파밸리 2000(Napa Valley 2000)‘, 고대와인 ’클라랑델 루즈2005(Calarendelle Rouge 2005)’, ‘클라랑델 루즈 2009(Clarendelle Rouge 2009)', ‘클라랑델 루즈 2011(Clarendelle Rouge 2011)'을 판매하였으나, 재고량 소진으로 인해 ㈜고대미래 크림슨스토어에서 독점 수입하여 선보이는 ‘라스토 랑데올 2014(Rasteau L’Andeol 2014)’ 와 ‘샤토 클락 2014(Chateau Clarke 2014)’ 로 변경하여 판매합니다.

이 글을 본 수빈이는 고려대학교 와인 콜렉팅이라는 목표를 가지게 되었다. 하지만 그냥 모으면 재미가 없으니 규칙을 가지고 와인을 수집하려고 한다.

와인을 사기로 마음먹은 해를 0년 차라고 정의하고, n년 차에는 Kn+Pn^2 만큼의 와인을 사는 것을 목표로 했다. K는 수빈이의 고려대 애착 정도를 나타내는 상수이고, P는 수빈이의 구매중독 정도를 나타내는 상수이다. 

그렇게 수빈이는 C년 동안 열심히 와인을 모았다. (마지막 해에 산 와인의 수는 KC + PC2가 된다.)

수빈이는 와인이 이제 방에 가득 쌓여, 자기가 얼마나 수집했는지 수를 세기 어려웠다.

여러분이 수빈이가 와인을 얼마나 수집했는지 계산해주자.

입력

첫 번째 줄에 수빈이가 와인을 모은 년수, 수빈이의 고려대 애착 정도, 수빈이의 구매중독 정도를 의미하는 정수 C, K, P가 공백으로 구분되어 주어진다. (0 ≤ C ≤ 100, 0 ≤ K ≤ 1000,  0 ≤ P ≤ 100)

출력

첫 번째 줄에 수빈이가 C년 동안 수집한 와인 수를 출력한다.

예제 입력 1

3 1 1

예제 출력 1

20

1년차 2병, 2년차 6병, 3년차 12병으로 총 20병을 수집하였다.

예제 입력 2

5 28 27

예제 출력 2

1905

더보기

Solution

#include<stdio.h>

int main(void)
{
	int C, K, P;

	scanf("%d %d %d", &C, &K, &P);

	printf("%d\n", K*C*(C+1)/2+P*C*(C+1)*(2*C+1)/6);

	return 0;
}
728x90

문제

당신은 N개의 테스트케이스들에게 반드시 인사를 해야 이 문제를 풀 수 있다.

N개의 줄에 걸쳐

"Hello World, Judge i!"

를 출력하는 프로그램을 만들라. 여기서 i는 줄의 번호이다.

입력

N이 주어진다. (1 ≤ N ≤ 200)

출력

한 줄에 하나의 Hello World, Judge i! 를 출력한다.

예제 입력 1

3

예제 출력 1

Hello World, Judge 1!
Hello World, Judge 2!
Hello World, Judge 3!

더보기

Solution

#include<stdio.h>

int main(void)
{
	int N;

	scanf("%d", &N);

	for(int i=1;i<=N;i++)
		printf("Hello World, Judge %d!\n", i);

	return 0;
}
728x90

문제

알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다.

출력

첫째 줄에 입력으로 주어진 단어의 길이를 출력한다.

예제 입력 1

pulljima

예제 출력 1

8

더보기

Solution

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

int main(void)
{
	char word[101]={'\0', };

	scanf("%s", word);

	printf("%d\n", (int)strlen(word));

	return 0;
}
728x90

문제

<그림 1>과 같이 9×9 격자판에 쓰여진 81개의 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.

예를 들어, 다음과 같이 81개의 수가 주어지면

이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 자연수가 주어진다. 주어지는 자연수는 100보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

예제 입력 1

3 23 85 34 17 74 25 52 65
10 7 39 42 88 52 14 72 63
87 42 18 78 53 45 18 84 53
34 28 64 85 12 16 75 36 55
21 77 45 35 28 75 90 76 1
25 87 65 15 28 11 37 28 74
65 27 75 41 7 89 78 64 39
47 47 70 45 23 65 3 41 44
87 13 82 38 31 12 29 29 80

예제 출력 1

90
5 7

더보기

Solution

#include<stdio.h>

int main(void)
{
	int board[9][9], x=0, y=0;

	for(int i=0;i<9;i++)
		for(int j=0;j<9;j++)
		{
			scanf("%d", &board[i][j]);

			if(board[i][j]>board[x][y])
			{
				x=i;
				y=j;
			}
		}

	printf("%d\n%d %d\n", board[x][y], x+1, y+1);
	return 0;
}
728x90

문제

고려대학교는 사랑입니다.

출력

첫째 줄에 “고려대학교”를 출력하세요.

예제 입력 1

 

예제 출력 1

고려대학교

더보기

Solution

#include<stdio.h>

int main(void)
{
	printf("고려대학교\n");

	return 0;
}
728x90

문제

두 사람 A와 B는 1부터 10까지의 숫자가 하나씩 적힌 열 장의 카드로 ‘게임’을 한다. 게임은 총 열 번의 ‘라운드’로 구성되고, 각 라운드 마다 자신이 가지고 있는 카드 중 하나를 제시하고, 한 번 제시한 카드는 버린다. 게임 승패는 다음과 같이 결정된다. 

  1. 각 라운드는 더 높은 숫자를 제시한 사람이 승리하고, 제시한 숫자가 같은 경우는 비긴다. 
  2. 열 번의 라운드에서 더 많은 라운드를 승리한 사람이 게임을 승리하고, 승리한 라운드 횟수가 동일한 경우 비긴다. 

다음은 게임의 한 예로, 각 라운드마다 A와 B가 제시한 카드의 숫자와 각 라운드의 승자를 보여준다. (비긴 라운드는 D로 표시함)

라운드 1 2 3 4 5 6 7 8 9 10
A의 카드 6 7 5 1 4 10 2 3 8 9
B의 카드 1 10 2 9 4 8 3 7 5 6
라운드 승자 A B A B D A B B A A

A는 5번의 라운드에서 승리하고 B는 4번의 라운드에서 승리하였으므로, 이 게임은 A가 승리한다. 

라운드 순서대로 A와 B가 제시한 카드의 숫자가 주어졌을 때, 게임의 승자를 판단하는 프로그램을 작성하시오. 

입력

첫 번째 줄에는 A가 제시한 카드의 숫자 10개가 라운드 순서대로 주어지고, 두 번째 줄에는 B가 제시한 카드의 숫자 10개가 라운드 순서대로 주어진다.

출력

게임의 승패가 결정되는 경우 승리한 사람을 출력하고, 비기는 경우에는 D를 출력한다. 

예제 입력 1

6 7 5 1 4 10 2 3 8 9
1 10 2 9 4 8 3 7 5 6

예제 출력 1

A

예제 입력 2

1 2 3 4 5 6 7 8 9 10
5 4 3 2 1 10 9 8 7 6

예제 출력 2

D

더보기

Solution

#include<stdio.h>

int main(void)
{
	int A=0, B=0, a[10], b[10];

	for(int i=0;i<10;i++)
		scanf("%d", &a[i]);
	for(int i=0;i<10;i++)
		scanf("%d", &b[i]);

	for(int i=0;i<10;i++)
		if(a[i]<b[i])
			B++;
		else if(a[i]>b[i])
			A++;

	printf("%c\n", A<B?'B':A>B?'A':'D');

	return 0;
}
728x90

문제

버스 운전수 비와이 씨가 운전하는 버스(verse아님 ㅎ)는 N개의 정거장을 거친 후 종착역에 도착한다. 각 정거장은 내릴 인원수와 올라탈 인원수가 정해져 있다. 종착역에 도착하면 버스에 타고 있던 모든 사람이 내린다.

입력

첫 줄에 출발역과 종착역을 제외한 정거장의 수 N(1<=N<=100,000)과 출발역에서 탑승하는 사람의 수 K(1<=K<=10,000)가 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 줄마다 i번째 정거장에서 탑승하는 인원 A와 하차하는 인원 B가 주어진다. (0<=A,B<=10,000)

출력

종착역에 도착했을 때, 버스 운전수의 이름을 출력해라.

예제 입력 1

3 2
10 3
21 8
0 15

예제 출력 1

비와이

더보기

Solution

#include<stdio.h>

int main(void)
{
	printf("비와이\n");

	return 0;
}
728x90

+ Recent posts