[백준 10871번] X보다 작은 수
J-Shine
[백준 10871번] X보다 작은 수 C++ 풀이
문제
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
내 풀이
#include<bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n(0), x(0), input(0);
vector<int> arr(0);
cin >> n >> x;
for (int i = 0; i < n; i++) {
cin >> input;
arr.push_back(input);
}
for (int i = 0; i < n; i++) {
if (arr.at(i) < x) cout << arr.at(i) << " ";
}
return 0;
}
vector 쓸 땐 push_back()과 at등 함수를 사용해야 한다.
더 좋은 듯한 풀이1
#include<bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, x;
cin >> n >> x;
int* a = new int[n];
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < n; i++) {
if (a[i] < x) cout << a[i] << ' ';
}
delete[] a;
}
배열을 동적할당하여 + delete까지 함
더 좋은 듯한 풀이2
#include<bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, x, t;
cin >> n >> x;
while (n--) {
cin >> t;
if (t < x) cout << t << ' ';
}
}
그냥 입력을 받아서 n보다 작으면 바로 출력, 아니면 버림