일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자료구조
- Scanner class
- 변수
- IF
- java
- 반복문
- for
- 백준알고리즘
- IFELSE
- java프로그래밍
- 유비쿼터스
- 백준
- FOR문
- C언어
- 하드웨어
- 데이터
- 배열
- Scanner
- 자바
- 함수
- error
- IF문
- 파이썬프로그래밍기초
- Spring
- 스캐너클래스
- 1차원배열
- MySQL
- 스캐너
- 알고리즘
- 기본
Archives
- Today
- Total
정리하고기록하자
백준 (JAVA) - 수 정렬하기 2 (2751) 본문
반응형
백준 - 알고리즘 정렬 수 정렬하기 2 (2751) 문제
문제 : N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
1. 정렬을 하기 위해서 sort 를 써야 한다는거 까지 생각했고
배열 선언 후 배열에 원소를 넣어 Arrays.sort()로 정렬 후 출력 해야 겠다고 접근 했다.
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int[] a = new int[sc.nextInt()];
for(int i = 0; i < a.length; i ++) {
a[i] = sc.nextInt();
}
sc.close();
Arrays.sort(a);
for(int i = 0; i < a.length; i ++) {
System.out.println(a[i]);
}
}
}
결과
시간 초과....
2. 그럼 List 에 담은 뒤 Collectios.sort() 로 정렬 후 출력 하기
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < a; i++) {
list.add(sc.nextInt());
}
Collections.sort(list);
for(Integer value : list) {
System.out.println(value);
}
}
}
결과
출력 결과는 같은데 시간 초과가 난다.
여기서 부터 구글링
출력으로 Stringbuilder 를 사용하면 성능면에서 더 좋다.
Stringbuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라
기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르고 상대적으로 부하가 적다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int a = sc.nextInt();
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < a; i++) {
list.add(sc.nextInt());
}
Collections.sort(list);
for(Integer value : list) {
sb.append(value).append("\n");
}
System.out.println(sb);
}
}
반응형
'백준 - 알고리즘' 카테고리의 다른 글
백준 (JAVA) - 더하기 사이클 (1110) (0) | 2022.07.05 |
---|---|
백준 (JAVA) - 대소문자 바꾸기 (2744) (0) | 2022.03.17 |
백준 (JAVA) - 정수 N개의 합 (15596) (0) | 2022.02.11 |
백준 (JAVA) - OX퀴즈 (8958) (0) | 2022.02.10 |
백준 (JAVA) - 평균 (1546) (0) | 2022.02.10 |