๐Ÿ“• Algorithm/Algorithm

์ •๋ ฌ - ์„ ํƒ ์ •๋ ฌ

ํ•œ์ฝ”๋”ฉ 2020. 11. 25. 03:03
728x90
728x90

์ •๋ ฌ

โ†’ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ

 

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐฐ์šฐ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•œ ํ›„, ๋‹ค์Œ์— ๋ฐฐ์šธ ์ด์ง„ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅ!

(์ฆ‰, ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด์ง„ ํƒ์ƒ‰์˜ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •)

 

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜ : ์„ ํƒ / ์‚ฝ์ž… / ํ€ต / ๊ณ„์ˆ˜ ๋“ฑ

 

 

 

์ด ์นด๋“œ๋“ค์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด๋ณด์ž.

 

์„ ํƒ ์ •๋ ฌ

โ†’ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์„ ํƒํ•ด ๋งจ ์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๊ณ , ๊ทธ ๋‹ค์Œ ์ž‘์€ ์ˆ˜๋ฅผ ์„ ํƒํ•ด ๋‘๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๊ณ ...

 

"๋งค๋ฒˆ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์„ ํƒํ•˜์—ฌ n๋ฒˆ์งธ ์ˆ˜์™€ ๋ฐ”๊พผ๋‹ค."

 

 

๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์ธ 0์„ ๋งจ ์•ž์— ์žˆ๋Š” 7๊ณผ ์ž๋ฆฌ๋ฅผ ๊ต์ฒดํ•œ๋‹ค.

 

๊ทธ ๋‹ค์Œ ์ž‘์€ ์ˆ˜์ธ 1์„ ๋‘ ๋ฒˆ์งธ ์ˆ˜ 5์™€ ์ž๋ฆฌ๋ฅผ ๊ต์ฒดํ•œ๋‹ค.

 

๊ทธ ๋‹ค์Œ๋‹ค์Œ ์ž‘์€ ์ˆ˜์ธ 2๋ฅผ ์„ธ ๋ฒˆ์งธ ์ˆ˜ 9์™€ ์ž๋ฆฌ๋ฅผ ๊ต์ฒดํ•œ๋‹ค...

 

์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋ณตํ•˜๋ฉด,

 

์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋งˆ์ง€๋ง‰ ํ•œ ์ˆ˜๋ฅผ ๋งˆ์ง€๋ง‰ - 1์œ„์น˜์˜ ์ˆ˜์™€ ๋ฐ”๊พธ๋ฉด ๋์ด๋‚œ๋‹ค.

 

 

์„ ํƒ ์ •๋ ฌ ์†Œ์Šค ์ฝ”๋“œ

#include <iostream>
#include <vector>

using namespace std;

vector<int> arr = { 7, 5, 9, 0, 3, 1, 6, 2, 4, 8 };

int main(void) {

	for (int i = 0; i < arr.size(); i++) {

		// ๋งจ ์•ž ์ˆซ์ž๋ฅผ ์ž„์‹œ ์ €์žฅํ•  ๋ณ€์ˆ˜
		int tmp = arr[i];
		// ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ตœ์†Œ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜
		int min_idx = i;

		// ์ตœ์†Œ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ
		for (int j = i + 1; j < arr.size(); j++)
			min_idx = arr[min_idx] > arr[j] ? j : min_idx;

		// ์Šค์™€ํ•‘
		arr[i] = arr[min_idx];
		arr[min_idx] = tmp;

		// ๋‹จ๊ณ„๋ณ„๋กœ ์ •๋ ฌ๋˜๋Š” ๋ฐฐ์—ด ์ถœ๋ ฅ
		for (int k = 0; k < arr.size(); k++)
			cout << arr[k] << " ";
		cout << endl;
	}

	return 0;
}

 

 

์ถœ์ฒ˜ : ์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ : ์ทจ์—…๊ณผ ์ด์ง์„ ๊ฒฐ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธํ„ฐ๋ทฐ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

728x90
๋ฐ˜์‘ํ˜•