문제는 직접 가서 보는것이 예의 'ㅅ'
https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
맨 처음에는 내가 학원 처음 다니면서 배웠던 Scanner 를 사용해서 문제를 풀었다. ( 사실 이게 익숙해서 )
package sort;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class B_2750 {
public static void main(String[] args) throws NumberFormatException, IOException {
Scanner sc = new Scanner(System.in));
int n = sc.nextInt();
int arr[] = new int[n];
for (int i = 0; i < n; i++) {
int num = sc.nextInt();
arr[i] = num;
}
sc.close();
for (int i = 0; i < n; i++) {
for (int j = i; j > 0; j--) {
int arrJ = arr[j];
int arrJpre = arr[j-1];
if (arrJ < arrJpre ) {
arr[j] = arrJpre;
arr[j-1] = arrJ;
}else {
break;
}
}
}
for(int a : arr) {
System.out.println(a);
}
}
}
문제 자체에 중복이 없다고 해놔서 중복제거 코드는 사용하지 않았고,
그냥 Arrays.sort() 를 사용할까 생각했지만 , 문제 푸는 것 자체가 구현에 목적을 두고 있기 때문에 하지 않았다.
그래서 맨 처음에는 ArrayList로 풀려고 했지만, 삽입 & 수정이 너무 메모리랑 시간을 잡아먹을 것 같아서 + 어려워서 포기했다.
그래서 그냥 기본으로 int 배열로 문제를 풀었다.
정렬 중에서 뭘 쓸까 고민했는데 , 삽입정렬이 좀 빠르다고 들어서
( 물론 다른 여러정렬이 있지만 내 수준에서는 버블 , 선택 ,삽입이 이해가 되어있는 상태라 선택지는 3개 )
삽입으로 구현 해 봤다.
결과는
망했다. 맞긴 했는데 , 시간이 너무 오래걸린 것 같다.
그래서 여러가지 생각해봤다가 BufferedReader로 썼는데
시간이랑 속도가 혁명적으로 줄어들었다. ( 코드는 늘어났지만 )
그래서 결론은 Scanner 대신 BufferedReader를 사용해야겠다는 것.
package sort;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class B_2750 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int arr[] = new int[n];
for (int i = 0; i < n; i++) {
int num = Integer.parseInt(br.readLine());
arr[i] = num;
}
br.close();
for (int i = 0; i < n; i++) {
for (int j = i; j > 0; j--) {
int arrJ = arr[j];
int arrJpre = arr[j-1];
if (arrJ < arrJpre ) {
arr[j] = arrJpre;
arr[j-1] = arrJ;
}else {
break;
}
}
}
for(int a : arr) {
System.out.println(a);
}
}
}
'Algorithm ( 알고리즘 )' 카테고리의 다른 글
이분검색(Binary Search) - Java구현 (0) | 2023.02.19 |
---|