본문 바로가기
코테초보 코커두드

[코딩 초보의 탐구] 백준 2750번 : 수 정렬하기 (자바)

by 코커두드 2023. 11. 8.

Clare Fischer Album Manteca(1965)

위의 자켓은 1965년에 발매된 재즈 연주자 Clare Fischer(클레어 피셔)의 앨범 Manteca입니다. 여기에 수록된 모든 곡들을 좋아하지만 가장 유명한 곡은 역시 Morning일거에요. Morning은 피셔의 자작곡이기도 합니다. 라틴 리듬 베이스의 곡으로, 부드럽고 온화한 곡이에요. 마음이 심란할 때에는 이 앨범을 정주행 해보세요:) 

 

💪 그럼 이제 문제 풀이와 풀이를 하며 탐구를 해볼까요?

 

1. 백준 2750번 수 정렬하기 - 문제 파악하기

백준에서 가져온 수 정렬하기 문제입니다. 문제 이름에서 이미 '정렬'이라는 단어가 들어가네요.

정렬로 풀이를 하면 아주 간단합니다.

 

2. 정렬이란?

✅ 정렬은 데이터를 일정한 순서로 나열하는 작업입니다. 버블 정렬, 선택 정렬, 삽입 정렬, 머지 정렬, 셸 정렬, 카운팅 정렬, 힙 정렬 등 매우 다양합니다.

✅ 시간복잡도를 고려하면 버블 정렬은 worst가 됩니다. 시간복잡도가 O(n²)이 되기 때문입니다.

✅ 무엇으로 풀까? 

      ➡ 저는 선택정렬로 풀었습니다. 선택 정렬 역시 시간복잡도를 고려하면 좋은 선택이 아닐 수 있습니다.

      ➡ 그러나 제가 지금 가진 능력으로 구현할 수 있는 것은 선택정렬이었습니다. 그래서 선택 정렬을 선택했습니다. 

 

 

3. 풀이

import java.util.Scanner;

//수 정렬하기(브론즈2)
public class p2750 {
    // 선택정렬
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int[] arr = new int[N];

        for (int i = 0; i < N; i++) {
            arr[i] = sc.nextInt();
        }

        for (int i = 0; i < N - 1; i++) {
            for (int j = i + 1; j < N; j++) {
                if (arr[i] > arr[j]) {
                    int temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
            }
        }

        for (int i : arr) {
            System.out.println(i);
        }
    }
}

 

 

마무리

현 문제의 연장선으로 수 정렬하기2와 수 정렬하기 3도 풀어보겠습니다.

알고리즘은 풀수록 재밌는 것 같아요. 지식이 더 쌓이고, 풀이도 익숙해지면 매일 취미처럼 풀 수 있을 것 같습니다.

여담이지만 고등학생 때 취미가 수학문제 풀기, 대학생 때 취미가 회계, 미시경제(그래프 좋아...), 재무관리(특히 파생상품 헷지 좋아...) 문제 푸는 것이었습니다. 수를 다루는 것은 제게 참 큰 재미를 줍니다. 스트레스 푸는 용으로도 좋고요.

여담이 길어졌지만 그렇습니다. 💜

 

그리고 내일은 일찍 일어나야 합니다.

요즘 일찍 자도 알람을 듣지도 못하거나, 애초에 알람을 맞추는 것을 까먹곤 합니다.

정신 똑디 차려야지요:)

부디 아침에 일찍 일어날 수 있기를 바라며, 본 포스팅을 마무리합니다. 🍀

 

 

 

 

🚨 본 포스팅은 개인적인 학습 목적으로 작성되었습니다.

정확하고 날카로운 풀이를 원하시는 분들은 고수분들의 포스팅을 보시기를 권장드립니다.