백준알고리즘
백준알고리즘:p10989 수 정렬하기3
socialcomputer
2021. 3. 17. 23:18
반응형
분류: 정렬
▶문제
▶코드
//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨
package sort;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class p10989 {
//미리 10000자리를 만들어 놓고 그 자리에 1씩 증가해준다.
public static void main(String[] args) {
try( BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));){
int[] arr = new int[10000];
int n = Integer.parseInt(br.readLine());
for(int i=0; i<n; i++) {
arr[Integer.parseInt(br.readLine())-1] +=1; //1부터 10000까지의 숫자(배열은 0~9999)
}
int count =0;
for(int j=0; j<10000; j++) {
if(arr[j] != 0) {
for(int k=0; k<arr[j]; k++) {
bw.write(String.valueOf(j+1)+"\n");
count++;
}
}
if(count>n) break;
}bw.flush();
}catch (Exception e) { e.printStackTrace(); }
}
}
▶처음에 합병정렬 그대로 제출했는데 틀렸다길래 찾아보니,, 최대 수 크기의 배열을 만들어 놓고 그 배열 칸에 1씩 카운트 하는 방식으로 풀어야 한다고 한다... 언제 힌트없이 풀수 있을까ㅠ
그래서 10000크기의 배열을 선언.
채점결과
링크 www.acmicpc.net/problem/10989
10989번: 수 정렬하기 3
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
www.acmicpc.net
반응형