중간값 찾기 (D1)
문제 링크
Arrays.sort() 사용
package swea;
import java.util.Scanner;
public class p2063 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int middle = N / 2;
int[] nums = new int[N];
for (int i = 0; i < N; i++) {
nums[i] = sc.nextInt();
}
Arrays.sort(nums);
System.out.println(nums[middle]);
}
}
Sort()사용 안하고 풀기
- middle 값을 계산해서 for 문을 이용해 배열에서 가장 작은 수를 찾아
- 그 수의 인덱스를 찾아 들어올 수 있는 가장 큰 값(199 or 200) 으로 변경
- 위의 반복이 middle만큼 진행되면 그 값이 중간값 !
package swea;
import java.util.Scanner;
public class p2063 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int middle = N / 2;
int[] nums = new int[N];
for (int i = 0; i < N; i++) {
nums[i] = sc.nextInt();
}
int cnt = 0;
while (true) {
int min = 199;
int idx = 0;
for (int i = 0; i < N; i++) {
if (nums[i] < min) {
min = nums[i];
idx = i;
}
}
nums[idx] = 200;
if (cnt++ == middle) {
System.out.println(min);
break;
}
}
}
}