멋쟁이 개발자의 블로그

[C/백준] 10871번 - X보다 작은 수 본문

Language/C

[C/백준] 10871번 - X보다 작은 수

y_MIN 2020. 7. 19. 20:38

문제 : 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.

입력 : 첫째 줄에 N과 X가 주어진다(1 ≤ N, X ≤ 10,000). 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

출력 : X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.

 

//틀린 풀이
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
	int n, x, i;
	scanf_s("%d %d", &n, &x);
	int a[10000];

	srand(time(NULL));
	for (i = 0;i < n;i++) {
		a[i] = ((rand() % 10000)+1);
		printf("%d ", a[i]);
	}
	printf("\n");
	for (i = 0;i < n;i++) {
		if (a[i] < x) printf("%d ", a[i]);
	}
	return 0;
}

처음에 문제를 잘못 이해해서

첫 번째 반복문에서 난수를 발생시켜서 수열을 만들고 배열에 저장한 뒤에,

두 번째 반복문에서 배열의 원소들 중 조건에 맞는 원소만 출력하려고 했는데

만들어지는 난수가 너무 커서 X보다 작은 수가 나오지 않았다...ㅋㅋㅋㅋ

알고보니 수열도 입력받는거였다.. 이런

 

//고친 코드
#include <stdio.h>

int main(void)
{
	int n, x, i, a;
	scanf_s("%d %d", &n, &x);

	for (i = 0;i < n;i++) {
		scanf_s("%d", &a);
		if (a < x) printf("%d ", a);
	}
	return 0;
}

이렇게 간단히 되는걸....ㅠㅠ