https://st-lab.tistory.com/107?category=857114
[백준] 10989번 : 수 정렬하기 3 - JAVA [자바]
www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. ww..
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));
StringBuilder sb = new StringBuilder();
int[] arr = new int[20001];
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++) {
arr[Integer.parseInt(br.readLine()) + 10000] += 1;
}
for(int i = 0; i < arr.length; i++) {
if (arr[i] > 0) {
for(int j = 0; j < arr[i]; j++) {
sb.append(i - 10000).append("\n");
}
}
}
System.out.println(sb);
}
}
그런데 여기서 문제는 코드를 쓸데없이 복잡하게 작성했고 배열의 범위도 잘못됐다! 이전에 boolean 배열할 때처럼 범위를 설정했는데 선생님 코드를 보니 그게 아니었다. (머쓱) 그럼 다시 선생님의 코드로..
선생님 코드
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));
StringBuilder sb = new StringBuilder();
int[] arr = new int[10001];
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++) {
arr[Integer.parseInt(br.readLine())]++;
}
for(int i = 1; i < arr.length; i++) {
while (arr[i] > 0) {
sb.append(i).append("\n");
arr[i]--;
}
}
System.out.println(sb);
}
}
아니 왜 쉬운 걸 생각을 못하는 걸까? 증감연산자 모르는 것도 아니고 while문을 모르는 것도 아닌데?
많이 안 짜봤으니까 그렇겠지(자문자답). 결론은 백문이불여일타!
'Computer Science > Algorithm' 카테고리의 다른 글
[백준] 2108 - 통계학 (Java) (0) | 2022.09.22 |
---|---|
[백준] 2751 - 수 정렬하기 2 (Java) (0) | 2022.09.21 |
[백준] 2750 - 수 정렬하기 (Java) (0) | 2022.09.21 |
[백준] 9020 - 골드바흐의 추측 (Java) (0) | 2022.09.20 |
[백준] 2581 - 소수 (Java) (1) | 2022.09.19 |