πŸŒ€ etc..

μŠ€ν„°λ””#1 _ 버블 μ •λ ¬

CodeLoge 2025. 1. 4. 19:32

#1 버블 μ •λ ¬

: νšŒμ°¨λ§ˆλ‹€ 각 자리λ₯Ό μ„œλ‘œ λΉ„κ΅ν•œ ν›„, κ°€μž₯ 큰 수λ₯Ό 맨 λ’€λ‘œ λ³΄λ‚΄λŠ” 방법

: 비ꡐ νšŒμ°¨λ§ˆλ‹€ κ°€μž₯ 큰 μˆ˜κ°€ μœ„μΉ˜ν•œ 맨 끝의 μˆ˜λŠ” 비ꡐ λŒ€μƒμ—μ„œ μ œμ™Έ

: 회차λ₯Ό λ°˜λ³΅μ‹œν‚€λ©΄μ„œ 비ꡐ λŒ€μƒμ΄ μ‚¬λΌμ§ˆ λ•ŒκΉŒμ§€ μ •λ ¬

 

#2 버블 μ •λ ¬ 기본식


// κ°€μž₯ λ§ˆμ§€λ§‰ 값은 μ–΄μ°¨ν”Ό 큰 수둜 μ €μž₯되기 λ•Œλ¬Έμ—, λ°°μ—΄μ˜ 길이 - 1 번의 회차만큼 반볡
for (int i = 0; i < arr.length - 1; i++) {
	// κ΅ν™˜μ„ ν• λ•Œλ§ˆλ‹€ κ°€μž₯ λ§ˆμ§€λ§‰ 자리의 값은 κ°€μž₯ 큰 값이기 λ•Œλ¬Έμ—,
	// λΉ„κ΅λŒ€μƒμ΄ μ—†μ–΄ λ°°μ—΄μ˜ 길이 - 1 - 회차의 수 만큼 반볡
	for (int j = 0; j < arr.length - i - 1; j++) {
		// κ΅ν™˜ μ•Œκ³ λ¦¬μ¦˜
		// λ§Œμ•½ μ•žμ— μ €μž₯된 μˆ˜κ°€ λ’€μ˜ μˆ˜λ³΄λ‹€ 크닀면 μ„œλ‘œμ˜ 자리λ₯Ό κ΅ν™˜
		if (arr[j] > arr[j + 1]) {
			// μ•žμ˜ μˆ˜κ°€ 더 크기에, μž„μ‹œ μ €μž₯ λ³€μˆ˜μ— μ €μž₯
			int temp = arr[j];
			// λ’€μ˜ 수λ₯Ό μ•žμ˜ 곡간에 μ €μž₯
			arr[j] = arr[j + 1];
			// μž„μ‹œ μ €μž₯ λ³€μˆ˜μ— μ €μž₯ν•΄λ‘” 더 큰 수λ₯Ό, λ’€μ˜ 곡간에 μ €μž₯
			arr[j + 1] = temp;
		}
	}
}

#3 μŠ€ν„°λ”” 문제

λ¬Έμžν˜•μΈ μ•ŒνŒŒλ²³μ„ char νƒ€μž…μ˜ 배열에 μ €μž₯ν•˜κ³ , μ•ŒνŒŒλ²³ μˆœμ„œμ— λ§žμΆ”μ–΄ 배열을 μ •λ ¬ν•˜κΈ°

 

#4 문제 풀이

μ•ŒνŒŒλ²³μ„ μ •λ ¬ν•˜κΈ° μ „, μ•„μŠ€ν‚€μ½”λ“œλ₯Ό ν†΅ν•˜μ—¬ 각 μ•ŒνŒŒλ²³μ— ν•΄λ‹Ήν•˜λŠ” 숫자λ₯Ό 이해

μ»΄ν“¨ν„°λŠ” μ‚¬λžŒκ³Ό λ‹€λ₯΄κ²Œ μ•ŒνŒŒλ²³ κ·ΈλŒ€λ‘œλ₯Ό μ΄ν•΄ν•˜λŠ”κ²Œ μ•„λ‹Œ, 숫자둜 λ³€ν™˜ν•˜μ—¬ 인식을 ν•˜λ©° 각자의 고유번호λ₯Ό κ°€μ§€κ³  있음

μ•„μŠ€ν‚€μ½”λ“œ ν‘œμ— 따라 배열을 μˆœμ„œλŒ€λ‘œ 정렬이 κ°€λŠ₯

A~ZκΉŒμ§€ μ•„μŠ€ν‚€μ½”λ“œ ν‘œ


μ•ŒνŒŒλ²³ A B C D ... W X Y Z
10μ§„μˆ˜ 65 66 67 68 ... 87 88 89 89

이와 같이 각각의 문자둜 비ꡐλ₯Ό ν•˜μ—¬ 크기 비ꡐλ₯Ό ν•˜λŠ” 방법이 μ•„λ‹Œ, μ•ŒνŒŒλ²³λ“€μ„ 10μ§„μˆ˜μ˜ κ°’μœΌλ‘œ μ „ν™˜ν•˜μ—¬ 크기 λ³€ν™”λ₯Ό μ‹œν‚¨ ν›„,

μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ•ŒνŒŒλ²³μ„ μˆœμ„œλŒ€λ‘œ μ •λ ¬


// μ•ŒνŒŒλ²³μ€ λ¬Έμžν˜•μ΄κΈ°μ— char νƒ€μž…μœΌλ‘œ λ°°μ—΄νƒ€μž…μ„ μ§€μ •ν•˜κ³  μ €μž₯
char [] arr = {'Z', 'A', 'C', 'B', 'Y', 'X', 'E', 'D', 'F'};

// λ°°μ—΄μ˜ κΈΈμ΄λŠ” 9, λͺ¨λ“  κ°’μ˜ 자리λ₯Ό μ°ΎκΈ° μœ„ν•΄μ„œ 8λ²ˆμ„ λ°˜λ³΅ν•˜κΈ° μœ„ν•΄ 'λ°°μ—΄μ˜ 길이 - 1'
for (int i = 0; i < arr.length - 1; i++) {
	// 각 회차의 λ§ˆμ§€λ§‰ 값은 이미 ν•΄λ‹Ή 회차의 μ΅œλŒ“κ°’ 이기 λ•Œλ¬Έμ— μ œμ™Έ
	for (int j = 0; j < arr.length - i - 1; j++) {
		if (arr[j] > arr[j + 1]) { // μ•ŒνŒŒλ²³ μˆœμ„œ 비ꡐ
		// 두 μ•ŒνŒŒλ²³μ˜ 자리λ₯Ό κ΅ν™˜ν•˜λŠ” κ΅ν™˜ μ•Œκ³ λ¦¬μ¦˜
		// λ°°μ—΄μ˜ μžλ¦¬μ— μ €μž₯된 κ°’ λ˜ν•œ char νƒ€μž…μ˜ 값이기 λ•Œλ¬Έμ—,
		// μž„μ‹œ μ €μž₯ λ³€μˆ˜λͺ… λ˜ν•œ charκ°’μœΌλ‘œ μ„ μ–Έ
		char temp = arr[j];
		arr[j] = arr[j + 1];
		arr[j + 1] = temp;
		}
	}
}

문제 좜λ ₯ κ°’


// μ •λ ¬ μ „
{Z, A, C, B, Y, X, E, D, F}

// μ •λ ¬ ν›„
{A, B, C, D, E, F, X, Y, Z}