코딩테스트

프로그래머스 - 중앙값 구하기

오쟝 2023. 10. 5. 21:09

오늘의 문제는 중앙값을 구하는 문제입니다! 이 문제의 핵심은 배열을 오름차순으로 정렬하는 것인데 두 가지 방법을 사용할 수 있습니다~!

  • 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까지만 부분 오름차순한다는 의미입니다~

 

오늘 코테도 끝~~ (^▽^ 。 )//