[SWEA] 2063. 중간값 찾기 _ JAVA

jii0_0·2022년 8월 11일
0

SW Expert Academy

목록 보기
11/33
post-thumbnail

중간값 찾기 (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; // 0부터 시작할거라서 +1 안해줘도됨
		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; // 0부터 시작할거라서 +1 안해줘도됨
		int[] nums = new int[N];
		for (int i = 0; i < N; i++) {
			nums[i] = sc.nextInt();
		}

		// sort 안쓰고 풀기
		int cnt = 0; // 젤 작은 수부터 찾기, 순서 저장할 변수
		while (true) {
			int min = 199; // 199가 가장 큰 수
			int idx = 0; // 젤 작은 수의 인덱스
			for (int i = 0; i < N; i++) {
				if (nums[i] < min) { // 젤 작은 수 찾기
					min = nums[i]; // 작은 수 저장
					idx = i; // 작은 수의 인덱스
				}
			} // 다 돌고나면 idx에는 가장 작은 수의 인덱스가 저장됨
			nums[idx] = 200; // 가장 작은 수가 있던 곳을 들어올 수 없는 큰 값으로 설정해줌
			if (cnt++ == middle) {
				System.out.println(min);
				break;
			}
		}
	}
}
profile
느려도 꾸준히

0개의 댓글