백준 2750 - 수 정렬하기

컴퓨터/문제풀이집

728x90
반응형

 

 

2750번: 수 정렬하기

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

www.acmicpc.net

수 정렬하기

백준 단계별 풀어보기 정렬 편에 있는 가장 첫 번째 문제입니다.

컴퓨터 알고리즘을 배울 때 정렬중에가장 기초 정렬방법은 버블 정렬입니다. 

본문은 버블정렬의 개념을 C로 구현하여 풀도록 하겠습니다.

 

문제를 정리하면 다음과 같습니다.

  • 첫 번째 입력값(N) - 정렬이 필요한 수의 개수 (1 <= N <=1,000)
  • N의 수만큼 입력 - 중복되지 않으며, 1,000보다 작거나 같은 정수
  • 결과를 오름차순으로 한 줄에 하나씩 출력합니다.

 

문제 파악 및 구현준비

  • 버블 정렬 알고리즘을 이해한다.
  • 버블정렬 알고리즘을 C로 구현한다.

소스코드

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>


int main(void) {

	//입력 값과 입력 값을 저장할 곳 구현하기
	int N;
	int Array[1000];
	//정렬이 필요한 숫자들의 범위 
	int Max = 1001;
	//버블정렬을 하기위한 요소 인덱스 확인 변수
	int Index = 0;
	//정렬이 필요한 수 입력받기
	scanf("%d", &N);

	//N개의 정렬되지 않은 숫자 입력 받기
	for (int i = 0; i < N; i++) {
		scanf("%d", &Array[i]);
	}

	//정렬 구현하기

	//배열 시작부터 N까지
	for (int i = 0; i < N; i++) {

		//계속해서 뒤의 요소와 비교하며 스왑
		for (int j = 0; j < N - 1; j++) {
			if (Array[j] > Array[j+1]) {
				int temp = Array[j];
				Array[j] = Array[j + 1];
				Array[j + 1] = temp;
			}
		}
	}

	//정렬된 배열 출력하기

	for (int i = 0; i < N; i++) {
		printf("%d\n", Array[i]);
	}



	return 0;
}

후기

사실 소스코드 자체는 버블 정렬의 개념을 알고 있다면 어렵지 않습니다.

단순하게 계속해서 처음부터 끝까지 비교하며 바꿔준다의 개념이기 때문입니다.

알고리즘적 지식을 프로그램 언어로 구현할 수 있느냐가 관건입니다.

요소들을 탐색하는 인덱스가 범위를 초과하지 않도록 하는 방법도 중요합니다.

 

 

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :