![[BOJ] 백준_2750번_수 정렬하기_C/C++](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGD9b7%2FbtrhL8g67B5%2F12ztl7hPJiPTKVHJ1fiWyk%2Fimg.jpg)
[BOJ] 백준_2750번_수 정렬하기_C/C++백준 알고리즘2021. 10. 15. 11:22
목차
문제 출처
https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
코드
//[BOJ] 2750번_수 정렬하기
#include <iostream>
using namespace std;
int main()
{
int n;
int tmp=0;
cin >> n;
int* arr = new int[n];
for (int i = 0; i < n; i++)
cin >> arr[i];
for (int i = 0; i < n-1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (arr[i] > arr[j]) {
tmp = arr[j];
arr[j] = arr[i];
arr[i] = tmp;
}
}
}
for (int i = 0; i < n; i++)
cout << arr[i] << endl;
return 0;
}
풀이 과정
입력받을 수의 개수를 입력받고 그 크기만큼의 정수형 배열을 만들어 인덱스에 하나씩 입력받는다. arr[i]를 arr[j]에 비교했을 때 더 크다면 서로 바꾸어준다. i가 j보다 인덱스 상 먼저이므로 이러한 방식으로 반복문을 진행하게 되면 더 큰수는 점차 나중 인덱스로 밀려나게 된다. 예를 들어 4, 6, 3, 2 순서대로 입력받았을 경우 첫번째 arr[i](arr[0])는 4가 되고 6과 비교 시 더 작으므로 그대로, 3과 비교 시 더 크므로 서로 바뀌어 배열도 3, 6, 4, 2로 바뀐다. arr[i]는 3이 되었고 arr[j]는 j가 1 증가하여 마지막 숫자인 2가 되었다. arr[i]는 2와 비교 시 더 크므로 서로 바뀌어 배열 순서는 2, 6, 4, 3으로 바뀐다. i가 1 증가하여 arr[i]는 6이 되고 6은 네 수 중 가장 크므로 바로 다음 arr[j]과 바뀌어 2, 4, 6, 3 순서로 바뀌고 arr[i]는 4인 상황에서 j가 1 증가하여 arr[j]는 3이므로 다시 바뀌어 2, 3, 6, 4 순서로 바뀌게 된다. 다시 i가 1 증가하여 arr[i]는 6, arr[j]는 4가 되고 마찬가지로 6이 더 크므로 서로 바뀌어 2, 3, 4, 6 순서로 배열이 정렬되는 것을 확인할 수 있다.
728x90
반응형
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_1436번_영화감독 숌_C/C++ (0) | 2021.10.18 |
---|---|
[BOJ] 백준_1427번_소트인사이드_C/C++ (0) | 2021.10.17 |
[BOJ] 백준_2839번_설탕 배달_C/C++ (0) | 2021.10.14 |
[BOJ] 백준_10870번_피보나치 수 5_C/C++ (1) | 2021.10.13 |
[BOJ] 백준_14681번_사분면 고르기_C/C++ (0) | 2021.10.12 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!