백준/C++

[백준] 10871번: X보다 작은 수 | C++ 풀이

성실한 당근농부 2023. 5. 9. 23:46

# 문제

정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.

 

 


 

# 풀이

배열의 개념을 알고 앞선 조건문 문제들을 잘 풀어냈다면 쉬운 문제다.

정답 소스코드를 확인해보기 전,

 

ios_base::sync_with_stdio(false);
cin.tie(NULL);

만약 이 두 코드에 대해 모르는 분이 있다면 아래 더보기를 펼쳐 문제를 풀고, 링크해둔 글들을 읽고 오길 권한다.

 

 


 

그럼 이제 정말 정답 소스코드를 확인해보자.

 

#include <iostream>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);	// 두 표준 입출력 동기화 해제
    cin.tie(NULL);	// 입력과 출력 묶음 풀기

    int n, x;
    cin >> n >> x;
    int a[n];
    
    for(int i=0; i<n; i++){
        cin >> a[i];
        if(a[i] < x) cout << a[i] << ' ';
    }

    return 0;
}

 

우선 첫째 줄에서 주어진 n과 x를 받아주고, 수열 a를 담을 1차원 정수배열을 만들어준다.

이때 크기는 n으로 설정해주면 0부터 n-1까지의 인덱스에 n개의 값이 들어갈 수 있다.

 

이후 for문을 통해 인덱스 값을 조정해주고, a[0]부터 a[n-1]까지 둘째 줄에서 주어진 정수 n개를 담아준다.

이때 정수를 담으면서 x와 값을 비교해주면 for문을 두 번 돌리지 않고도 x보다 작은 값들을 출력할 수 있다.

이렇게 하면 바로 끝나는 아주 간단한 코드다.

 

 

해당 코드로 답안을 제출했을 때 메모리와 시간을 확인해보자.

 

 

 

 

만약 앞서 언급한 빠른 입출력 처리를 해주지 않았더라면

 

시간이 400ms로 꽤 많이 차이가 난다.

앞으로 코드가 더 복잡해지고 길어진다면 이 차이는 계속해서 커질 것이다.

빠른 입출력에 대해 제대로 공부하고, 잘 활용해보도록 하자.

 

 


 

 

 

10871번: X보다 작은 수

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

728x90