반응형
https://www.acmicpc.net/problem/2750
두가지 방법으로 나누어 풀어보았다.
1. 버블정렬
2. 메소드 이용하기
1.[버블정렬]
첫 번째 인덱스부터 시작하여 뒤의 인덱스들의 값들과 비교하여 최솟값들을 차곡차곡 쌓아나가는 방법이다.
나는 BufferReader를 이용하여 값을 받았다.
첫 줄의는 숫자의 갯수가 들어오기떄문에 들어온 값을 Integer.ParseInt해준다.
이후 배열을 다음 숫자들의 값을 받아줄 배열을 받아주며 길이는 첫줄의 숫자로 지정한다.
1
2
3
4
|
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
|
cs |
for문을 이용해 숫자의 값을 받아준다.
1
2
3
|
for (int i = 0; i<N; i++){
arr[i] = Integer.parseInt(br.readLine());
}
|
cs |
이제 버블정렬을 이용해 인덱스를 정렬해주자 이중 for문을 이용해준다.
- arr[0]의 값과 이후의 arr[1]값을비교해준다.if문을 통해 arr[0]의 값이 큰 경우 두 값을 변경해준다.
- 이후 다시 arr[0]의 값과 arr[2]의 값 비교, arr[0]과 arr[3]의 값 비교 등 N개의 배열의 길이 만큼 돌면서 배열의 수 중 arr[0]에 가장 작은 값이 들어가도록 한다.
- 이후 arr[1]의 값과 arr[2]비교, arr[1]와 arr[3]비교하는식으로 돌린다고 생각하면된다.
- 이렇게 되면 마지막 수는 자동으로 가장 큰 수가 들어가기 때문에 겉에 있는 for문은 N-1까지 반복하면 된다.
1
2
3
4
5
6
7
8
9
|
for (int i = 0; i< N-1; i++){ //첫인덱스부터 끝인덱스 -1인덱스까지 비교
for (int j = i+1; j<N; j++){ //arr[i]인덱스와 그 뒤의 인덱스들을 크기비교하여 교환
if (arr[i]>arr[j]){
int hi = arr[i];
arr[i] = arr[j];
arr[j]= hi;
}
}
}
|
cs |
전체 코드
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
|
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));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
for (int i = 0; i<N; i++){
arr[i] = Integer.parseInt(br.readLine());
}
for (int i = 0; i< N-1; i++){ //첫인덱스부터 끝인덱스 -1인덱스까지 비교
for (int j = i+1; j<N; j++){ //arr[i]인덱스와 그 뒤의 인덱스들을 크기비교하여 교환
if (arr[i]>arr[j]){
int hi = arr[i];
arr[i] = arr[j];
arr[j]= hi;
}
}
}
for (int val: arr){
System.out.println(val);
}
}
}
|
cs |
2.[메소드 활용]
Arrays.sort메소드를 사용한다. 또한 이번에는 Bufferreader대신 Scanner를 사용해봤다.
Arrays.sort 메소드는 자바에서 기본적으로 제공해주는 정렬 메소드다. Arrays 패키지만 import 해준 뒤 sort 메소드를 사용하면 된다.오름차순으로 나타난다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int [] arr = new int [N];
for (int i = 0; i< N; i++) {
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
for (int i = 0; i<N; i++){
System.out.println(arr[i]);
}
}
}
|
cs |
반응형
'알고리즘 > 백준(BAEKJOON)' 카테고리의 다른 글
[백준]10773번 제로 [JAVA] (0) | 2021.12.07 |
---|---|
[백준]10828 스택 /자바/JAVA (0) | 2021.11.03 |
백준 1차원배열/4344 자바/평균은 넘겠지 (0) | 2021.09.29 |
[1152 자바] 단어의 개수/백준 (0) | 2021.09.24 |
[1157 자바] 단어공부: 알고리즘/ 백준 (0) | 2021.09.23 |