ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BOJ #2750 수 정렬하기
    BOJ 2021. 1. 29. 12:51

    문제

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

    입력

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

    출력

    첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

     


    소스코드(C언어)

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    
    int main() {
    	int N;
    	scanf("%d", &N);
    	int arr[1000] = { 0 };
    	for (int i = 0; i < N; i++) {
    		scanf("%d", &arr[i]);
    	}
    
    	int j, tmp;
    
    	for (int i = 0; i < N; i++) {
    		j = i - 1;
    		tmp = arr[i];
    
    		while (j>=0 && arr[j] > tmp) {
    			arr[j + 1] = arr[j];
    			j = j - 1;
    		}
    
    		arr[j + 1] = tmp;
    	}
    	
    	for (int i = 0; i < N; i++) {
    		printf("%d\n", arr[i]);
    	}
    	return 0;
    }

     

    Idea

    삽입 정렬을 사용한다.

     

    삽입정렬이란?

    → 현재 위치에서, 자신보다 아래에 있는 요소들과 비교하여 자기가 들어갈 자리를 찾아, 해당 자리에 삽입하는 알고리즘이다.

     

     

    'BOJ' 카테고리의 다른 글

    BOJ #11279 최대 힙  (0) 2021.01.29
    BOJ #2751 수 정렬하기 2  (0) 2021.01.29
    BOJ #15829 Hashing  (0) 2021.01.19
    BOJ #18111 마인크래프트  (0) 2021.01.19
    BOJ #10816 숫자 카드 2  (0) 2021.01.19

    댓글

Designed by Tistory.