문제
정수 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 n, x;
int a[10001];
int main(void){
std::ios::sync_with_stdio(0);
std::cin.tie(0);
cin >> n >> x;
for(int i = 0; i < n; i++){
cin >> a[i];
}
for(int i = 0; i < n; i++){
if(a[i] < x){
cout << a[i] << " ";
}
}
}
우선 내가 짠 C++ 코드는 위와 같다.
얼마전에 c로도 풀었었는데 c로 풀은 코드는 다음과 같다.
int main()
{
int n, x;
scanf("%d %d", &n, &x);
int* a = malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
int y;
scanf("%d", &y);
a[i] = y;
}
for (int i = 0; i < n; i++) {
if (x > a[i]) {
printf("%d ", a[i]);
}
}
free(a);
return 0;
}
알고리즘 막 입문한채로 풀어본 문제라 사실 잘 짠 코드는 아닌게 확실하지만 ㅋㅋㅋ
알고리즘 문제 풀려고 혼자 c언어 독학한다고 조금씩 문법 공부 했었는데 c언어는 너무 어렵고.. 헷갈렸다. 개인적으로 c보단 c++이 조금 더 잘 맞는 것 같아서 c++ 문법을 공부해야겠다. 앞으로 알고리즘은 c++로 풀어보려한다. 화이팅,,
알고리즘 문제 링크
백준 10871번 X보다 작은 수