반응형
백준 2750번 문제 - 수 정렬하기
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
문제 분석
- N개의 수를 입력
- 수 정렬
해결 키 포인트
- 정렬 방식
- Arrays.sort()
- 버블 정렬
버블 정렬 설명
버블정렬은 두 인접한 데이터의 크기를 비교해 정렬하는 방법으로 반복문을 돌면서 인접한 데이터 간의 swap 연산으로 정렬한다.
→ 시간복잡도: O(n^2) : 다른 정렬 알고리즘보다 속도가 느린편
코드
package ch01;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String [] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// N 입력
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
// 입력받을 배열
int num [] = new int[N];
// 배열 입력
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
num[i] = Integer.parseInt(st.nextToken());
}
/** 다음 두 방식 중 하나의 방식 선택해서 사용 **/
/* (1) Arrays.sort()를 이용한 배열 정렬 */
Arrays.sort(num);
/* (2) 버블 정렬을 이용한 배열 정렬 */
// 끝값을 배열 마지막 값에서 줄여가기
for(int i=N-1;i>0;i--) {
// i번째까지 배열 비교 및 swap
for(int j=0;j<i;j++) {
// 두 값 비교 -> 앞의 값이 뒤에 갑보다 클 경우
if(num[j] > num[j+1]) {
// 두 값 swap
int swap = num[j+1];
num[j+1] = num[j];
num[j] = swap;
}
}
}
// 출력
for(int i=0;i<N;i++)
bw.write(num[i]+"\n");
bw.flush();
bw.close();
}
}
반응형
'CodingTEST' 카테고리의 다른 글
[백준 1427] 소트인사이드 (JAVA) (0) | 2023.07.29 |
---|---|
[백준 1377] 버블 소트 (JAVA) (0) | 2023.07.10 |
[백준 11286번] 절댓값 힙 (JAVA) (0) | 2023.03.12 |
[백준 2164번] 카드2 (JAVA) (0) | 2023.03.12 |
[백준 17298번] 오큰 수 (JAVA) (0) | 2023.03.12 |