[프로그래머스/java]정수 내림차순으로 배치하기 *버블정렬*
리트리버J
·2020. 12. 26. 01:43
728x90
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
버블정렬이란?
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
31
32
33
34
35
36
37
38
39
40
|
public static void testArraySort2() {
// 버블정렬(Bubble Srot) : 왼쪽(작은값) 오른쪽(큰값)으로 마지막까지 교차 교환
// 인접한 두 개의 값을 비교하여
// 더 큰값을 우측으로 보내는 정렬 알고리즘
// 이미 정렬이 어느 정도 되어 있는 데이터에
// 대한 수행속도가 매우 빠르며, 구현이 쉽다.
// 단, 역으로 정렬되어 있는 배열을 정렬 할 때에는
// 시간 복잡도가 제곱수 배로 증가하여 효율이 급격히 떨어진다.
int[] array = {6,4,2,1,3,5}; //array.length = 6, []는 5까지
// 4, 6, 2, 1, 3, 5
// 4, 2, 6, 1, 3, 5
// 4, 2, 1, 6, 3, 5
// 4, 2, 1, 3, 6, 5
// 4, 2, 1, 3, 5, 6
// 2, 4, 1, 3, 5, 6
// 2, 1, 4, 3, 5, 6
// 2, 1, 3, 4, 5, 6
// 2, 1, 3, 4, 5, 6
// 1, 2, 3, 4, 5, 6
int temp = 0; // 교환용 임시 변수
// 배열의 길이 -1 (마지막 숫자 제외)
for(int i = array.length - 1; i > -1; i--) { // i = 5 → 4 → 3 → 2 → 1 → 0
for(int j = 0; j < i; j++) { // i = 5 : j = 0 → 1 → 2 → 3 → 4
if(array[j] > array[j+1]) { // 0 < 1 → 1 < 2 → 2 < 3 → 3 < 4 → 4 < 5
temp = array[j]; // temp에 0을 넣어준다. temp = 6
array[j] = array[j+1]; // 0에 1을 넣어준다. array[0] = 4
array[j+1] = temp; // 1에 temp를 넣어준다. // array[1] = 6, 교환 성립.
}
}
}
System.out.println(Arrays.toString(array)); //arrays클래스의 toString메소드 : []형태로 뽑아서 처리해줌.
//변수명.toString()를 하게 되면 hashcode값을 가져오게 된다.
}
|
cs |
1. 버블정렬을 통한 해결방법
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
|
class Solution {
public long solution(long n) {
// String.valueof() 메소드를 통하여 long타입을 String타입으로 변경 후,
// String.toCharArray() 메소드를 통하여 String타입을 char[]로 변경한다.
char[] arr = String.valueOf(n).toCharArray();
// 임시 char변수
char temp = 'a';
// 버블정렬을 통한 숫자 재배치
for(int i = arr.length - 1; i > -1; i--) {
for(int j=0; j < i; j++) {
if(arr[j] < arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
// char[] → String
String str = "";
for(char i : arr) {
str += i;
}
// Long.parseLong()메소드를 통하여 String → Long타입 변환
return Long.parseLong(str);
}
}
|
cs |
2. Arrays.sort()을 통한 해결방법
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
728x90
'알고리즘 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/java] 자릿수 더하기 (0) | 2020.12.29 |
---|---|
[프로그래머스/java] 자연수 뒤집어 배열로 만들기 (0) | 2020.12.27 |
[프로그래머스/java]제일 작은 수 제거하기 (0) | 2020.12.25 |
[프로그래머스/java]정수 제곱근 판별 (0) | 2020.12.23 |
[프로그래머스/java]짝수와 홀수 (0) | 2020.12.21 |