10871번: X보다 작은 수
문제 )
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력 :
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
출력 :
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
풀이)
처음에 내가 푼 풀이는 다음과 같다.
입력을 a에 계속 덮어씌워 그 값을 출력하는 방식을 택했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# include <iostream>
using namespace std;
int main(){
int n, x, a;
cin >> n >> x;
for(int i = 0; i < n; i++){
cin >> a;
if(a < x) {
cout << a << " ";
}
}
return 0;
}
|
cs |
정답처리는 되었지만, 속도가 python보다도 느렸기에 다른 분들의 코드도 한번 살펴보았다.
while문으로 더 편하게 코드 짜기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include <iostream>
using namespace std;
int main(){
int n, x, a;
cin >> n >> x;
while (n--) {
cin >> a;
if (a < x) {
cout << a << " ";
}
}
return 0;
}
|
cs |
속도가 훨씬 빠른 scanf, printf를 이용하는 방법
밑의 방법의 경우 입출력 속도가 훨씬 빠른 C의 scanf, printf를 사용하므로,
헤더로 <stdio.h> 을 넣어주어야 하며, 이 방법을 사용할 시 cin, cout을 사용하지 못한다.
또한 scanf와 printf를 사용할 때, 해당 값이 들어오는 위치를 표시해주어야 하며,
이 값들이 정수로 들어오기 때문에 이 코드에서는 %d를 사용했다.
==> python의 f-string을 사용하듯이 사용하면 된다.!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <stdio.h>
using namespace std;
int main(){
int n, x, a;
scanf("%d %d", &n, &x);
while (n--) {
scanf("%d", &a);
if (a < x) {
printf("%d ", a);
}
}
}
|
cs |
출처 : https://www.acmicpc.net/problem/10871
10871번: X보다 작은 수
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
www.acmicpc.net
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 10951번: A+B - 4 (C++) (0) | 2022.04.17 |
---|---|
[백준] 10952번: A+B - 5 (C++) (0) | 2022.04.15 |
[백준] 2439번: 별 찍기 - 2 (C++) (0) | 2022.04.13 |
[백준] 2438번: 별 찍기 - 1 (C++) (0) | 2022.04.12 |
[백준] 11021번: A+B - 8 (C++) (0) | 2022.04.12 |