๐Ÿ’ป

[๋ฐฑ์ค€] ์ •๋ ฌ - 2947. ๋‚˜๋ฌด ์กฐ๊ฐ ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด Baekjoon

[๋ฐฑ์ค€] ์ •๋ ฌ - 2947. ๋‚˜๋ฌด ์กฐ๊ฐ

๋˜ํšจ๋‹ˆ 2020. 2. 24. 14:52

๋ฌธ์ œ

๋™ํ˜์ด๋Š” ๋‚˜๋ฌด ์กฐ๊ฐ์„ 5๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‚˜๋ฌด ์กฐ๊ฐ์—๋Š” 1๋ถ€ํ„ฐ 5๊นŒ์ง€ ์ˆซ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ์“ฐ์—ฌ์ ธ ์žˆ๋‹ค. ๋˜, ๋ชจ๋“  ์ˆซ์ž๋Š” ๋‹ค์„ฏ ์กฐ๊ฐ ์ค‘ ํ•˜๋‚˜์—๋งŒ ์“ฐ์—ฌ ์žˆ๋‹ค.

๋™ํ˜์ด๋Š” ๋‚˜๋ฌด ์กฐ๊ฐ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ 1, 2, 3, 4, 5 ์ˆœ์„œ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

  1. ์ฒซ ๋ฒˆ์งธ ์กฐ๊ฐ์˜ ์ˆ˜๊ฐ€ ๋‘ ๋ฒˆ์งธ ์ˆ˜๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ๋‘˜์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ฐ”๊พผ๋‹ค.
  2. ๋‘ ๋ฒˆ์งธ ์กฐ๊ฐ์˜ ์ˆ˜๊ฐ€ ์„ธ ๋ฒˆ์งธ ์ˆ˜๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ๋‘˜์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ฐ”๊พผ๋‹ค.
  3. ์„ธ ๋ฒˆ์งธ ์กฐ๊ฐ์˜ ์ˆ˜๊ฐ€ ๋„ค ๋ฒˆ์งธ ์ˆ˜๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ๋‘˜์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ฐ”๊พผ๋‹ค.
  4. ๋„ค ๋ฒˆ์งธ ์กฐ๊ฐ์˜ ์ˆ˜๊ฐ€ ๋‹ค์„ฏ ๋ฒˆ์งธ ์ˆ˜๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ๋‘˜์˜ ์œ„์น˜๋ฅผ ์„œ๋กœ ๋ฐ”๊พผ๋‹ค.
  5. ๋งŒ์•ฝ ์ˆœ์„œ๊ฐ€ 1, 2, 3, 4, 5 ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด 1 ๋‹จ๊ณ„๋กœ ๋‹ค์‹œ ๊ฐ„๋‹ค.

์ฒ˜์Œ ์กฐ๊ฐ์˜ ์ˆœ์„œ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ ๋งˆ๋‹ค ์กฐ๊ฐ์˜ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์กฐ๊ฐ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ˆซ์ž๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 5๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉฐ, ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค. ์ฒ˜์Œ ์ˆœ์„œ๋Š” 1, 2, 3, 4, 5๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

์ถœ๋ ฅ

๋‘ ์กฐ๊ฐ์˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€”๋•Œ ๋งˆ๋‹ค ์กฐ๊ฐ์˜ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1

2 1 5 3 4

 

์˜ˆ์ œ ์ถœ๋ ฅ1

1 2 5 3 4
1 2 3 5 4
1 2 3 4 5

 

์ƒ๊ฐ

5. ๋งŒ์•ฝ ์ˆœ์„œ๊ฐ€ 1,2,3,4,5 ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹ค์‹œ 1๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ„๋‹ค๋Š” ์กฐ๊ฑด๋•Œ๋ฌธ์— checkํ•จ์ˆ˜๋ฅผ ๋‘์–ด ์ •๋ ฌ์ด ์™„์„ฑ๋˜์ง€ ์•Š์•˜์œผ๋ฉด ๊ณ„์†ํ•˜๊ฒŒ๋” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค. 

(i, j)  0, 1/ 1, 2/ 2, 3 / 3, 4/ 4, 5/  

 

 

์ œ์ถœํ•˜๊ณ  ๋‚˜์„œ ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ๊น ๊ตณ์ด checkํ•จ์ˆ˜๋ฅผ ๋‘์–ด์„œ while๋ฌธ์„ ๋Œ์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฑฐ์˜€๋‹ค!

for(int i=0; i<5; i++){
	for(int j=0; j<4-i; j++){
    	if(arr[j] > arr[j+1]){
        	int temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
            
            printf("%d %d %d %d %d\n", arr[0], arr[1], arr[2], arr[3], arr[4]);
        }
    }
}

โ€ป ๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort)

: ๋‘ ์ธ์ ‘ํ•œ ์›์†Œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2)์ด๋‹ค. 

 

 

์ž‘์„ฑํ•œ ์ฝ”๋“œ

#include <iostream>
using namespace std;

int arr[5];
int check(){
    for(int i=0; i<5; i++){
        if(arr[i] != i+1){
            return -1;
        }
    }
    return 0;
}

int main(int argc, const char * argv[]) {
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
   
    int temp;
    
    for(int i=0; i<5; i++){
        cin >> arr[i];
    }
    
    while(check()==-1){
        for(int i=0; i<4; i++){
            for(int j=i+1; j<i+2; j++){
                if(arr[i] > arr[j]){
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    
                    for(int i=0; i<5; i++){
                        cout << arr[i] << " ";
                    }
                    cout << "\n";
                }
                else{
                    continue;
                }
            }
        }
    }
    return 0;
}

๋ฐ˜์‘ํ˜•
Comments