백준/C++

[백준] 2751번: 수 정렬하기 2 | C++ 풀이

성실한 당근농부 2023. 7. 1. 11:06

# 문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

 

 


 

# 풀이

[시간 복잡도가 O(nlogn)인 정렬 알고리즘으로 풀 수 있습니다. 예를 들면 병합 정렬, 힙 정렬 등이 있지만, 어려운 알고리즘이므로 지금은 언어에 내장된 정렬 함수를 쓰는 것을 추천드립니다.]라는 메시지를 기억하고 풀어야 하는 문제다.

풀이를 진행하는 C++의 경우 STL을 사용해서 문제를 풀면 되는데 STL이 무엇인지 간단하게 확인하고 넘어가자.

 

STL이란 표준 템플릿 라이브러리로 일반적인 알고리즘들에 대한 효율적인 구현을 제공한다. 다시 말해 많은 프로그래머들이 공통적으로 사용하는 자료구조와 알고리즘 등을 템플릿으로 구현한 클래스로써 STL의 사용을 통해 개발 효율을 크게 향상시킬 수 있다.

STL의 구성요소는 크게 세 가지로 자료를 저장하는 구조인 컨테이너(container), 컨테이너 안에 저장된 요소들을 순차적으로 처리하기 위한 컴포넌트인 반복자(iterator), 정렬이나 탐색과 같은 다양한 알고리즘(algorithm)이 있다.

 

이번 풀이에서는 STL 알고리즘의 sort()함수를 사용해서 풀이를 진행한다.

sort에 대해 더 깊이 알아보고 싶은 사람은 레퍼런스 사이트를 링크해두었으니 확인해보길 바란다.

그럼 바로 정답 소스코드 확인!

 

#include <iostream>
#include <algorithm>
using namespace std;

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

    int n;
    cin >> n;
    int num[n];
    for(int i=0; i<n; i++){
        cin >> num[i];
    }
    sort(num, num+n);
    for(int i=0; i<n; i++){
        cout << num[i] << '\n';
    }
    return 0;
}

STL만 알고 있다면 구현은 간단하다.

1차원 배열에 n개의 숫자를 차례로 담고, sort로 오름차순 정렬 후 다시 출력하면 끝이다!

 

 

 

 

 

 


 

 

 

2751번: 수 정렬하기 2

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

 

728x90