일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 10814번
- 오블완
- 25576번
- 14215번
- Java
- 1362번
- 7489번
- 자바
- 25904번
- 프로젝트 기획서
- 백준
- 나무 공격
- 14726번
- 14322번
- 20953번
- 1141번
- 24267번
- 14656번
- 25642번
- 1333번
- 10409번
- 14592번
- 14467번
- 2355번
- 21866번
- 티스토리챌린지
- 5597번
- 21964
- Baekjoon
- 1568번
- Today
- Total
suheang
[백준] | JAVA, 자바 | 10989번 - 수 정렬하기 3 본문
https://www.acmicpc.net/problem/10989
10989번: 수 정렬하기 3
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
www.acmicpc.net
문제 요약 :
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성
(시간 제한 : 5초, 메모리 제한 : 512MB)
문제 풀이 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
int[] numbers = new int[n];
for (int i = 0; i < n; i++) {
numbers[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(numbers);
for (int i = 0; i < n; i++) {
sb.append(numbers[i]).append('\n');
}
System.out.println(sb);
}
}
1. 수의 개수 n개 입력받기
2. 입력받은 n번 만큼 반복해서 숫자 입력받기
3. 입력받은 숫자를 정렬
4. 정렬된 숫자들을 출력
( 2750번 코드와 동일 )
풀면서 2750번 코드와 같은 내용이 아닌가 싶어서 2750번 코드를 그대로 제출해보았더니 성공했다. 그래서 다른 사람들은 어떤 방법으로 풀어봤는지 살펴봤는데 3가지 정렬에 대해 비교했었다.
Arrays.sort()
Collections.sort()
Counting Sort
Arrays, Collections가 아닌 Counting Sort를 사용해서 문제를 풀라고 제출한 것 같아 아래 블로그에 Counting Sort에 대해 학습했다.
https://st-lab.tistory.com/104
자바 [JAVA] - 카운팅 정렬 (Counting Sort / 계수 정렬)
[정렬 알고리즘 모음] 더보기 1. 계수 정렬 (Counting Sort) - [현재 페이지] 2. 선택 정렬 (Selection Sort) 3. 삽입 정렬 (Insertion Sort) 4. 거품 정렬 (Bubble Sort) 5. 셸 정렬 (Shell Sort) 6. 힙 정렬 (Heap Sort) 7. 합병(
st-lab.tistory.com
리팩토링
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] count = new int[10001];
for (int i = 0; i < n; i++) {
int num = Integer.parseInt(br.readLine());
count[num]++;
}
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 10000; i++) {
while (count[i] > 0) {
sb.append(i).append('\n');
count[i]--;
}
}
System.out.println(sb);
}
}
1. 수의 개수 n개 입력받기
2. 입력받은 n번 만큼 반복해서 숫자 입력받기
3. 입력받은 수의 빈도수를 count 배열에 저장
4. count 배열을 이용하여 오름차순으로 정렬된 결과를 출력
아래서부터 Arrays.sort(), Collections.sort(), Counting Sort 순으로 제출
'알고리즘' 카테고리의 다른 글
[백준] | JAVA, 자바 | 11650번 - 좌표 정렬하기 (0) | 2024.03.07 |
---|---|
[백준] | JAVA, 자바 | 1427번 - 소트인사이드 (0) | 2024.03.06 |
[백준] | JAVA, 자바 | 2751번 - 수 정렬하기 2 (0) | 2024.03.05 |
[백준] | JAVA, 자바 | 25305번 - 커트라인 (0) | 2024.03.05 |
[백준] | JAVA, 자바 | 2587번 - 대표값2 (0) | 2024.03.04 |