๐Ÿ’ป JAVA_

JAVA#13 _ ์„ ํƒ์ •๋ ฌ๊ณผ ํ•จ์ˆ˜ํ™”

CodeLoge 2025. 1. 8. 19:30

#1 ์„ ํƒ์ •๋ ฌ

: ๊ฐ€์žฅ ์ž‘์€ ์š”์†Œ๋ฅผ ์ฐพ์•„์„œ ๋ฐฐ์—ด์˜ ๋งจ ์•ž๊ณผ ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜


// ๋ฐฐ์—ด์˜ ๊ฐ ์œ„์น˜์— ๋Œ€ํ•ด
for (int i = 0; i < n - 1; i++) {
// ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜
int minIndex = i;
	// i ์ดํ›„์˜ ์›์†Œ๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค
	for (int j = i + 1; j < n; j++) {
		if (arr[j] < arr[minIndex]) {
			minIndex = j;
		}
	}
	// ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด i๋ฒˆ์งธ ์œ„์น˜๊ฐ€ ์•„๋‹ˆ๋ฉด ๊ตํ™˜
	if (minIndex != i) {
		int temp = arr[i];
		arr[i] = arr[minIndex];
		arr[minIndex] = temp;
    }
}

#2 ์„ ํƒ์ •๋ ฌ ์‹คํ–‰

1. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ 3~10 ์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์Œ

2. ์ž…๋ ฅ๋ฐ›์€ ์ •์ˆ˜๋ฅผ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ์ง€์ •ํ•˜๊ณ  ๋žœ๋คํ•œ ๊ฐ’๋“ค์„ ๋ฐฐ์—ด ์†์— ๋Œ€์ž…

3. ๋ฐฐ์—ด ์†์— ๋žœ๋คํ•œ ๊ฐ’๋“ค์ด ๋Œ€์ž…๋˜๋ฉด ํ•ด๋‹น ๋ฐฐ์—ด ์ถœ๋ ฅ

4. ๋žœ๋คํ•œ ์ˆœ์„œ์˜ ๋ฐฐ์—ด์„ ์„ ํƒ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

5. ์ •๋ ฌ๋œ ๋ฐฐ์—ด๋“ค์„ ์ถœ๋ ฅ

 

#3 ์„ ํƒ์ •๋ ฌ ํ•จ์ˆ˜ํ™”

1. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ํ•จ์ˆ˜ ์ƒ์„ฑ

2. ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž๋กœ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ , ๋ฐฐ์—ด ์†์— ๋žœ๋คํ•œ ๊ฐ’์„ ๋Œ€์ž…ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ

3. ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ

4. ์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ ์‹œ์ผœ์ฃผ๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ

5. main ํ•จ์ˆ˜ ์‹คํ–‰


// 1. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ˆซ์ž ๊ฐœ์ˆ˜ ์ž…๋ ฅ ๋ฐ›๋Š” ํ•จ์ˆ˜ 
public static int getNumber() {
Scanner scanner = new Scanner(System.in);
int n;
	while (true) { 
		System.out.print("์ •๋ ฌํ•  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” (2 ์ด์ƒ): ");
		n = scanner.nextInt();
			if (n >= 3 && n <= 10) {
				break;  // ์ˆซ์ž๊ฐ€ 3 ์ด์ƒ, 10์ดํ•˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด while๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ
			} else {
			System.out.println("์ˆซ์ž๋Š” 2 ์ด์ƒ 10์ดํ•˜ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.");
			}
	}
		return n;  // ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์„ ๋ฐ˜ํ™˜
}
// 2. 1๋ถ€ํ„ฐ 100 ์‚ฌ์ด์˜ ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜
public static int[] RandomArray(int size) {
Random random = new Random();
int[] arr = new int[size];
	for (int i = 0; i < size; i++) {
		arr[i] = random.nextInt(100) + 1;
	}
	return arr; // ์ €์žฅ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜
}
// 3. ๋ฐฐ์—ด ์ถœ๋ ฅ ํ•จ์ˆ˜
public static void printArray(int[] arr, String message) {
	System.out.println(message);
		for (int num : arr) {
			System.out.print(num + " ");
		}
		System.out.println();
}
// 4. ์„ ํƒ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•จ์ˆ˜
public static void selectionSort(int[] arr) {
int n = arr.length;
	// ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๊ฐ’๊นŒ์ง€ ๋ฐ˜๋ณต
	for (int i = 0; i < n - 1; i++) {
		int minIndex = i; // ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ์ตœ์†Œ๊ฐ’ ์ธ๋ฑ์Šค๋กœ ์„ค์ •
			// ํ˜„์žฌ ์ธ๋ฑ์Šค ์ดํ›„์˜ ๋ฐฐ์—ด์—์„œ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต
			for (int j = i + 1; j < n; j++) {
				if (arr[j] < arr[minIndex]) { // ๋” ์ž‘์€ ๊ฐ’์„ ์ฐพ์œผ๋ฉด
					minIndex = j; // ์ตœ์†Œ๊ฐ’ ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธ
				}
			}
			// ์ตœ์†Œ๊ฐ’์ด ํ˜„์žฌ ์œ„์น˜์— ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ตํ™˜
			if (minIndex != i) {
				int temp = arr[minIndex];
				arr[minIndex] = arr[i];
				arr[i] = temp;
			}
	}
}
// ๋ฉ”์ธ ํ•จ์ˆ˜
public static void main(String[] args) {
	// 1. ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ›๊ธฐ
	int size = getNumber();
	// 2. ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑ
	int[] arr = RandomArray(size);
	// 3. ์ƒ์„ฑ๋œ ๋ฐฐ์—ด ์ถœ๋ ฅ
	printArray(arr, "์ƒ์„ฑ๋œ ๋ฐฐ์—ด:");
	// 4. ์„ ํƒ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰
	selectionSort(arr);
	// 5. ์ •๋ ฌ ์™„๋ฃŒ๋œ ๋ฐฐ์—ด ์ถœ๋ ฅ
	printArray(arr, "์ •๋ ฌ ํ›„ ๋ฐฐ์—ด:");
}

#4 Feedback

1. class๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘

public static int[] RandomArray(int size){

public static int[] randomArray(int size){

2. ์Šค์บ๋„ˆ, ๋žœ๋ค ๊ฐ™์ด ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ์ฒด๋ช…์„ ์ง€์ •ํ• ๋•Œ ํ’€๋„ค์ž„์„ ์•ˆ์จ๋„ ๊ดœ์ฐฎ๋‹ค

Scanner scanner = new Scanner(System.in);

Scanner sc = new Scanner(System.in);

3. ๋Œ€์†Œ๊ด€๊ณ„๋ฅผ ๋น„๊ตํ•  ๊ฒฝ์šฐ, ์ž‘์€์ˆ˜๋ฅผ ์ ค ์™ผ์ชฝ์œผ๋กœ, ์ ค ํฐ ์ˆ˜๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ณด๋ฉด ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง

if(n >= 3 && n <= 10){

if(3 <= n && n <= 10){

4. while๋ฌธ์„ ์ž‘์„ฑํ•˜๋ฉด์„œ else๋ฌธ์ด ํ•„์š”์—†๋‹ค๋ฉด, ์ƒ๋žต์„ ํ•˜๋Š” ๊ฒƒ์ด ์ฝ”๋“œ์˜ depth๊ฐ€ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง

while(true){ 
	if(3<=n && n <= 10) {
		break;
	} 
	else {
		System.out.println("์ˆซ์ž๋Š” 3์ด์ƒ 10์ดํ•˜ ์‚ฌ์ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.");
	}
}
// ==================================================================

while(true){
	if(3<=n && n<=10){
	break;
	}
	System.out.println("์ˆซ์ž๋Š” 3์ด์ƒ 10์ดํ•˜ ์‚ฌ์ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.");
}

5. ๋ฐ˜๋ณต์˜ ํšŸ์ˆ˜๋ฅผ ์•Œ์•„ for๋ฌธ์„ ๋ฐ˜๋ณตํ• ๋•Œ, ๋ฐ˜๋ณต์˜ ํšŸ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

int[] arr = new int[size];
	for (int i = 0; i < size; i++) {
		arr[i] = random.nextInt(100) + 1; // 1๋ถ€ํ„ฐ 100 ์‚ฌ์ด์˜ ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑ
	}
    
// ====================================================================

int[] arr = new int[size];
	for (int i = 0; i < arr.length; i++) {
		arr[i] = random.nextInt(100) + 1; // 1๋ถ€ํ„ฐ 100 ์‚ฌ์ด์˜ ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑ
	}