본문 바로가기
Develop/백준 (Cpp)

[백준] 10871번: X보다 작은 수 (C++)

by Tarra 2022. 4. 14.

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