세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다

 

목차

     


    백준 2750 문제

    https://www.acmicpc.net/problem/2750

     

    2750번: 수 정렬하기

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

    www.acmicpc.net

     


    문제 분석

    주어진 숫자를 오름차순으로 정렬한 후에 출력하라는 문제이다. 

     

     


     

    해결 전략

    정렬 방법에 대해 고민해본다.

    순차 정렬로는 '버블, 선택, 삽입 정렬'이 있고,  힙 정렬과 병합 정렬도 있다.

    시간복잡도를 고려하면 O(N logN)인 힙 정렬이나 병합 정렬을 사용해야 하지만 코딩 테스트이고 주어진 값이 1000으로 제한되어 있어 가장 간단한 버블 정렬을 사용하였다.

     

     

     


     

    코드

     

    #include <iostream>
    #include <vector>
    using namespace std;
     
    int main()
    {
        int k, N;
        cin >> N;
     
        vector<int> v;
     
        for (int i = 0; i < N; i++)
        {
            cin >> k;
     
            v.push_back(k);
        }
     
        for (int i = 0; i < v.size() - 1; i++)
        {
            for (int j = 0; j < v.size() - 1 - i; j++)
            {
                if (v[j] > v[j + 1])
                {
                    int temp = v[j];
                    v[j] = v[j + 1];
                    v[j + 1= temp;
                }
            }        
        }
     
        for (int a = 0; a < v.size(); a++)
        {
            cout << v[a] << endl;
        }
     
        return 0;
    }
    cs

    '⭐ 코딩테스트' 카테고리의 다른 글

    [백준 10817 C++] 세 수  (0) 2022.11.08
    [백준 2738] 행렬 덧셈  (0) 2022.11.07
    [백준 1978] 소수 찾기  (0) 2022.07.23
    [백준 10872] 팩토리얼  (0) 2022.07.23
    [백준 2869] 달팽이는 올라가고 싶다 (C++ 해설)  (0) 2022.07.13