ㅁ 문제
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다.
예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다.
정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
ㅁ 제한 사항
- array의 길이는 홀수입니다.
- 0 < array의 길이 < 100
- -1,000 < array의 원소 < 1,000
ㅁ 입출력 예
ㅁ 풀이
class Solution {
public int solution(int[] array) {
int num = 0;
while(true){
int escape = 0;
for(int i=0; i<array.length; i++){
if(i != array.length-1){
if(array[i] > array[i+1]){
num = array[i];
array[i] = array[i+1];
array[i+1] = num;
escape++;
}
}
}
if(escape == 0){
break;
}
}
return array[array.length/2];
}
}
- 정렬되지 않은 상태의 정수 배열이 매개변수로 온다. 이걸 오름차순으로 정렬하고, 중앙값을 구해야 한다.
- array 배열의 길이는 항상 홀수다.
- 배열의 길이를 모르기 때문에 반복문을 써야겠다고 생각.
- 정처기 공부할 때 이런 정렬을 몇개 봤던게 생각나서 양 옆을 비교해서 크면 오른쪽으로 가도록 정렬했다.
- i가 배열의 마지막 인덱스일땐 스왑이 안되게끔 했다.
- 그런데 한번 정렬로 완전하게 정렬되지 않아서 무한루프시켰다.
- 탈출은 int형 변수 하나 주고 스왑할 때 증가시키도록 하고, 증가하지 않았다면 정렬이 끝난 것이므로 탈출하도록 했다.
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[문제] n의 배수 고르기 (0) | 2024.10.10 |
---|---|
[문제] 대문자와 소문자 (0) | 2024.10.10 |
[문제] 숨어있는 숫자의 덧셈 (1) (0) | 2024.10.10 |
[문제] 문자 반복 출력하기 (0) | 2024.10.10 |
[문제] 짝수는 싫어요 (0) | 2024.10.10 |