오늘의 문제는 중앙값을 구하는 문제입니다! 이 문제의 핵심은 배열을 오름차순으로 정렬하는 것인데 두 가지 방법을 사용할 수 있습니다~!
- 1. 반복문과 조건문을 사용해서 구하는 방법!
- 2. Arrays 메서드를 사용하는 방법!
반복문과 조건문을 사용해서 구하는 방법
class Solution {
public int solution(int[] array) {
int answer = 0, temp;
for(int i = 0; i<array.length; i++){
for(int j = 0; j<array.length; j++){
if(array[i] < array[j]) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
return answer = array[array.length/2];
}
}
배열의 원소 하나를 나머지 원소들과 비교해 작으면 위치를 바꾸는 방법입니다!
반복문의 원리
* array[] = {9, 0, -1};
1번째 반복(i = 0) -> array[i] = 9 array[j] = 9, 0, -1 => 9는 다른 배열보다 크기 때문에 바뀌지 않음
2번째 반복(i = 1) -> array[i] = 0 array[j] = 9, 0, -1 => 0은 j = 1일 때 9보다 작음
** temp = 0 -> array[1] = 9 -> array[0] = 0 => array[] = {0, 9, -1};
3번째 반복(i = 2) -> array[i] = -1 array[j] = 0, 9, -1 => -1은 j = 0, j = 1일 때 1과 9보다 작음
** temp = -1 -> array[2] = 0 -> array[0] = -1 => array[] = {-1, 9, 0};
** temp = 0 -> array[2] = 9 -> array[1] = 0 => array[] = {-1, 0, 9};
이렇게 반복이 되기 때문에 배열이 오름차순으로 정리가 됩니다!!!
응용 ver - 배열 내림차순 정리를 반복문과 조건문 사용
for(int i = 0; i<array.length; i++){
for(int j = 0; j<array.length; j++){
if(array[i] > array[j]){
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
똑같은 코드에서 조건문의 조건만 바꾸면 됩니당~ ƪ(˘⌣˘)ʃ
Arrays 메서드 사용하기
자바에는 sort라는 메서드가 존재합니다~
사용 방법
import java.util.Arrays;
Arrays.sort(배열의 이름);
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
int answer = 0;
Arrays.sort(array);
return answer = array[array.length/2];
}
}
메서드를 사용해서 훨씬 간단한 코드가 완성이 되었습니다!!
응용 ver - 부분 정리하기
Arrays.sort(array, 0, 4);
0번째 인덱스부터 4까지만 부분 오름차순한다는 의미입니다~
오늘 코테도 끝~~ (^▽^ 。 )//
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 접미사인지 확인하기 (0) | 2023.12.18 |
---|---|
프로그래머스 - 부분 문자열 (1) | 2023.12.18 |
프로그래머스 - 배열 두 배 만들기 (0) | 2023.08.24 |
프로그래머스 - 짝수의 합 (0) | 2023.08.02 |
프로그래머스 - 치킨 쿠폰 (0) | 2023.08.01 |