정렬 문제(백준)

CTF수상까지...!!·2023년 11월 12일
0

정렬 문제.
https://www.acmicpc.net/problem/2752

문제
동규는 세수를 하다가 정렬이 하고 싶어졌다.

정수 세 개를 생각한 뒤에, 이를 오름차순으로 정렬하고 싶어졌다.

정수 세 개가 주어졌을 때, 가장 작은 수, 그 다음 수, 가장 큰 수를 출력하는 프로그램을 작성하시오.

입력
정수 세 개가 주어진다. 이 수는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 수는 모두 다르다.

출력
제일 작은 수, 그 다음 수, 제일 큰 수를 차례대로 출력한다.


문제풀이.

#include<stdio.h>
int num;
int arr[1000001];

void quick_sort(int *arr, int start, int end){
	if(start>=end){
    	return;
    }
    int pivot = start;
    int i = start+1;
    int j = end;
    int tmp;
    
    while(i>=j){
    	while(arr[i]<=arr[pivot]){
        	i++;
        }
        while(arr[j]>=arr[pivot] && j>start)
    	if(i>=j){
        	tmp = arr[j];
            arr[j] = arr[pivot];
            arr[pivot] = tmp; 
        }
        else{
        	tmp = arr[j];
            arr[j] = arr[i];
            arr[i] = tmp; 
        }
    }
    quick_sort(arr, start, j-1);
    quick_sort(arr, j+1, end); 
}

int main(void){
	scanf("%d", &num);
    for(int i=0;i<num;i++){
    	scanf("%d", &arr[i]);
    }
    quick_sort(arr, 0, num-1);
	 for (int i = 0; i < 3; i++) {
        printf("%d\n", arr[i]);
    }
    return 0;
}

c++ 알고리즘 라이브러리 사용

#include <stdio.h>
#include <algorithm>

int num;
int arr[1000001];

int main(){
	scanf("%d", &num);
    for(int i=0;i<num;i++){
    	scanf("%d", &arr[i]);
    }
    std::sort(arr, arr+num);
	for(int i=0;i<num;i++){
    	printf("%d\n", &arr[i]);
    }
return 0;
}

파이썬 코드

arr = list(map(int, input().split()))
sort_arr = sorted(num)

for i in range(3):
	print(sort_num[i])
profile
보안 공부...내 공부...

0개의 댓글