문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100) 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1

3

예제 출력 1

  *
 **
***
 **
  *

더보기

Solution

#include<stdio.h>

int main(void)
{
	int N;

	scanf("%d", &N);

	for(int i=1;i<N;i++)
	{
		for(int j=0;i+j<N;j++)
			printf(" ");
		for(int j=0;j<i;j++)
			printf("*");
		printf("\n");
	}
	for(int i=N;i>0;i--)
	{
		for(int j=0;i+j<N;j++)
			printf(" ");
		for(int j=0;j<i;j++)
			printf("*");
		printf("\n");
	}

	return 0;
}
728x90

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

출력

첫째 줄에 구한 0의 개수를 출력한다.

예제 입력 1

10

예제 출력 1

2

더보기

Solution

#include<stdio.h>

int divideby2(int N)
{
	int count=0;

	while(N%2==0)
	{
		count++;
		N/=2;
	}

	return count;
}

int divideby5(int N)
{
	int count=0;

	while(N%5==0)
	{
		count++;
		N/=5;
	}

	return count;
}

int main(void)
{
	int N, two=0, five=0;

	scanf("%d", &N);

	for(int i=2;i<=N;i++)
	{
		two+=divideby2(i);
		five+=divideby5(i);
	}

	printf("%d\n", two<five?two:five);

	return 0;
}
728x90

문제

연세대학교의 영문명은 YONSEI, 슬로건은 Leading the Way to the Future이다.

이를 출력하는 프로그램을 작성해보도록 하자.

입력

첫째 줄에 N이 주어진다. (N = 0 또는 1)

출력

  • N = 0일 경우: 연세대학교의 영문명을 출력한다.
  • N = 1일 경우: 연세대학교의 슬로건을 출력한다.

대소문자 구별에 주의하도록 하자.

예제 입력 1

0

예제 출력 1

YONSEI

더보기

Solution

#include<stdio.h>

int main(void)
{
	int N;

	scanf("%d", &N);

	printf("%s\n", N==0?"YONSEI":"Leading the Way to the Future");

	return 0;
}
728x90

문제

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 

입력

첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

예제 입력 1

110

예제 출력 1

99

예제 입력 2

1

예제 출력 2

1

예제 입력 3

210

예제 출력 3

105

예제 입력 4

1000

예제 출력 4

144

더보기

Solution

#include<stdio.h>

int function(int N)
{
	if(N<100)
		return N;
	else
	{
		int count=99;

		for(int i=100;i<=N;i++)
			count+=(i/100-(i/10)%10)==((i/10)%10-i%10);

		return count;
	}
}

int main(void)
{
	int N;

	scanf("%d", &N);

	printf("%d", function(N));

	return 0;
}
728x90

문제

다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.

1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.

연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.

입력

첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.

출력

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.

예제 입력 1

1 2 3 4 5 6 7 8

예제 출력 1

ascending

예제 입력 2

8 7 6 5 4 3 2 1

예제 출력 2

descending

예제 입력 3

8 1 7 2 6 3 5 4

예제 출력 3

mixed

더보기

Solution

#include<stdio.h>
#include<stdbool.h>

int main(void)
{
	bool ascending=true, descending=true;
	int order[8];

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

	for(int i=1;i<8;i++)
		if(order[i]>order[i-1])
			descending=false;
		else
			ascending=false;

	if(ascending)
		printf("ascending\n");
	else if(descending)
		printf("descending\n");
	else
		printf("mixed\n");

	return 0;
}
728x90

문제

두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

출력

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

예제 입력 1

24 18

예제 출력 1

6
72

더보기

Solution

#include<stdio.h>

int gcd_euclid(int x,int y)
{
	if(x<y)
	{
		int temp=x;
		x=y;
		y=temp;
	}

	while(y!=0)
	{
		int temp=x%y;
		x=y;
		y=temp;
	}

	return x;
}

int main(void)
{
	int num1, num2, gcd;

	scanf("%d %d", &num1, &num2);

	gcd=gcd_euclid(num1,num2);

	printf("%d\n%d\n", gcd, (num1*num2)/gcd);

	return 0;
}
728x90

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1

5

예제 출력 1

*        *
**      **
***    ***
****  ****
**********
****  ****
***    ***
**      **
*        *

더보기

Solution

#include<stdio.h>

int main(void)
{
	int N;

	scanf("%d", &N);

	for(int i=1;i<N;i++)
	{
		for(int j=0;j<i;j++)
			printf("*");
		for(int j=0;i+j<N;j++)
			printf("  ");
		for(int j=0;j<i;j++)
			printf("*");
		printf("\n");
	}
	for(int i=N;i>0;i--)
	{
		for(int j=0;j<i;j++)
			printf("*");
		for(int j=0;i+j<N;j++)
			printf("  ");
		for(int j=0;j<i;j++)
			printf("*");
		printf("\n");
	}

	return 0;
}
728x90

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1

5

예제 출력 1

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

더보기

Solution

#include<stdio.h>

int main(void)
{
	int N;

	scanf("%d", &N);

	for(int i=1;i<N;i++)
	{
		for(int j=0;i+j<N;j++)
			printf(" ");
		printf("*");
		for(int j=1;j<i;j++)
			printf("**");
		printf("\n");
	}
	for(int i=N;i>0;i--)
	{
		for(int j=0;i+j<N;j++)
			printf(" ");
		printf("*");
		for(int j=1;j<i;j++)
			printf("**");
		printf("\n");
	}

	return 0;
}
728x90

+ Recent posts