문제 URL:
10871번: X보다 작은 수
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
www.acmicpc.net
다음 문제는 입력한 숫자들 중 x보다 작은 수들을 선택하여 출력하는 문제로
변수를 사용해 입력 배열과 출력 배열을 각각 만든 뒤,
입력 배열에서 if문으로 조건에 맞는 값들을 선택하여 출력 배열에 할당하는 방식으로 풀이했다.
여기서, 주의했던 점은 입력 배열 list에 입력 받을 숫자의 개수 즉, n의 값을 모르기 때문에
배열의 크기가 컴파일 실행 시에 결정되는 동적 배열로 생성하여 동적 메모리에 할당했다.
또한, 입력 배열에서 x보다 작은 수들을 선택하여 만들어진 출력 배열 역시 동적 배열로 생성했다.
한 가지 생각하지 못한 점은 출력 배열 temp의 길이를 알 수 없어서
그냥 입력 배열과 같은 개수인 n개의 배열로 생성했다는 점이다.
(temp 배열의 길이) <= (list 배열의 길이)이기 때문에 출력 결과에 지장은 없다.
#include<iostream>
using namespace std;
int main()
{
int n,x;
cin >> n >> x;
int* list = new int[n];
for(int i=0; i<n; i++)
cin >> list[i];
int* temp = new int[n];
int size = 0;
for(int i=0; i<n; i++)
{
if(list[i]<x)
{
temp[size] = list[i];
size++;
}
}
for(int i=0; i<size; i++)
cout << temp[i] << " ";
return 0;
}