# 문제
정수 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로 꽤 많이 차이가 난다.
앞으로 코드가 더 복잡해지고 길어진다면 이 차이는 계속해서 커질 것이다.
빠른 입출력에 대해 제대로 공부하고, 잘 활용해보도록 하자.
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 5597번: 과제 안 내신 분..? | C++ 풀이 (0) | 2023.05.12 |
---|---|
[백준] 10818번: 최소, 최대 | C++ 풀이 (0) | 2023.05.10 |
[백준] 25314번: 코딩은 체육과목 입니다 | C++ 풀이 (0) | 2023.05.08 |
[백준] 2480번: 주사위 세개 | C++ 풀이 (0) | 2023.05.06 |
[백준] 2525번: 오븐 시계 | C++ 풀이 (0) | 2023.05.05 |