📌 문제
문제명 | 백준 2750 - 수 정렬하기 |
Link | https://www.acmicpc.net/problem/2750 |
분류 | 정렬 |
난이도 | B2 |
풀이 일자 | 2025-04-15 |
📌 문제 탐색하기
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
문제를 탐색했을때 중요한점은 입력받은 수를 오름차순으로 정렬하는것인데 자바에서 정수형 배열을 오름차순으로 정렬해주는 Arrays.sort() 함수가 있고, 아니면 정렬 알고리즘을 구현하여 해결할 수 있을것 같다.
정수N의 개수가 1000이하이므로 O(N²)까지 사용해도 되고
해당 문제에 시간복잡도 Arrays.sort()를 진행하므로 O(N log N)
📌 코드 설계하기
1. n을 입력 받음
2. n개수만큼 수를 입력 받고 정수형 배열에 담기
3. 정수형 배열을 오름차순으로 정렬
4. 출력
📌 시도 회차 수정 사항 (Optional)
없음
📌 정답 코드
package org.example.day09;
import java.io.*;
import java.util.Arrays;
/**
* description : 백준 2750 - 수 정렬하기
* packageName : org.example.day09
* fileName : Day09_BaekJoon_Q2750
* author : kimjongha
* date : 25. 4. 15.
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 25. 4. 15. kimjongha 최초 생성
*/
public class Day09_BaekJoon_Q2750 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 1. n을 입력받음
int n = Integer.parseInt(br.readLine());
int[] numbers = new int[n];
// 2. n개수만큼 수를 입력 받고 정수형 배열에 담기
for (int i = 0; i < numbers.length; i++) {
numbers[i] = Integer.parseInt(br.readLine());
}
// 3. 정수형 배열을 오름차순으로 정렬
Arrays.sort(numbers);
// 4. 출력
for (int i = 0; i < numbers.length; i++) {
bw.write(numbers[i] + "\n");
}
bw.flush();
bw.close();
}
}
📌 느낀점
Arrays.sort() 함수 구현하는 방법과 정렬 알고리즘으로 구현하는 방법이 있는데 위에 문제에서는 Arrays.sort() 함수가 효율적으로 보인다.
'알고리즘, 자료구조' 카테고리의 다른 글
[코딩 챌린지 11기 새싹반] 백준 2798 - 블랙잭 (Java) (2) | 2025.04.17 |
---|---|
[코딩 챌린지 11기 새싹반] 백준 2587 - 대표값2 (Java) (1) | 2025.04.16 |
[코딩 챌린지 11기 새싹반] 백준 1152 - 단어의 개수 (Java) (2) | 2025.04.14 |
[코딩 챌린지 11기 새싹반] 백준 10988 - 팰린드롬인지 확인하기 (Java) (1) | 2025.04.13 |
[코딩 챌린지 11기 새싹반] 백준 2738 - 행렬 덧셈 (Java) (1) | 2025.04.12 |