SWLUG/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šค์ฟจ (C)

[C] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šค์ฟจ_6์ฃผ์ฐจ ๋ฌธ์ œ 3: ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ

waterproof 2023. 8. 11. 22:54


[1] ๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์ค‘์•™๊ฐ’์€ ์–ด๋–ค ์ฃผ์–ด์ง„ ๊ฐ’๋“ค์„ ํฌ๊ธฐ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1, 2, 7, 10, 11์˜ ์ค‘์•™๊ฐ’์€ 7์ž…๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ค‘์•™๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • array์˜ ๊ธธ์ด๋Š” ํ™€์ˆ˜์ž…๋‹ˆ๋‹ค.
  • 0 < array์˜ ๊ธธ์ด < 100
  • -1,000 < array์˜ ์›์†Œ < 1,000

 

์ž…์ถœ๋ ฅ ์˜ˆ

array result
[1, 2, 7, 10, 11]  7
[9, -1, 0] 0

 

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ณธ๋ฌธ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • 9, -1, 0์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ฉด -1, 0, 9์ด๊ณ  ๊ฐ€์žฅ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.

 

 

 


[2] ์ •๋‹ต ๋ฐ ํ•ด์„

 

#.1 ์ •๋‹ต ์ฝ”๋“œ

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int solution(int array[], size_t array_len) {
    int i, j, temp = 0;
    
    // ๋ฒ„๋ธ” ์ •๋ ฌ์„ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
    for (i = 1; i < array_len; i++) {
        for (j = 0; j < array_len - i; j++) {
            if (array[j] > array[j + 1]) {
                temp = array[j];
                array[j] = array[j + 1];
                array[j + 1= temp;
            }
        }
    }
 
    // ์ค‘์•™๊ฐ’์„ ๋ฐ˜ํ™˜
    return array[array_len / 2]; // ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ค‘์•™๊ฐ’์„ ๋ฐ˜ํ™˜
}
cs

 

#.2 ํ•ด์„

 

1
#include <stdio.h>
cs

 

  • stdio.h ํ—ค๋” ํŒŒ์ผ์„ ํฌํ•จ์‹œํ‚จ๋‹ค. ์ด ํ—ค๋” ํŒŒ์ผ์€ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

1
int solution(int array[], size_t array_len) {
cs

 

  • solution ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค.
  • ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์€ int ํƒ€์ž…์ด๋‹ค.
  • ํ•จ์ˆ˜์—๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค.

          - array: ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ํฌ์ธํ„ฐ์ด๋‹ค. ์ •๋ ฌํ•ด์•ผ ํ•  ๊ฐ’๋“ค์ด ๋“ค์–ด ์žˆ๋‹ค.

          - array_len: ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” size_t ํƒ€์ž…์˜ ๋ณ€์ˆ˜์ด๋‹ค.

 

 

1
int i, j, temp = 0;
cs

 

  • i, j, temp๋ผ๋Š” ์„ธ ๊ฐœ์˜ ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • i์™€ j๋Š” ๋ฐ˜๋ณต๋ฌธ์—์„œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜์ด๋‹ค.
  • temp๋Š” ๊ฐ’๋“ค์„ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋  ์ž„์‹œ ๋ณ€์ˆ˜์ด๋‹ค.

 

 

1
2
3
4
5
6
7
8
9
for (i = 1; i < array_len; i++) {
    for (j = 0; j < array_len - i; j++) {
        if (array[j] > array[j + 1]) {
            temp = array[j];
            array[j] = array[j + 1];
            array[j + 1= temp;
        }
    }
}
cs

 

  • ์ด ๋ถ€๋ถ„์€ ๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • i์™€ j ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ์ •๋ ฌ์„ ์ง„ํ–‰ํ•œ๋‹ค.
  • ๋งŒ์•ฝ array[j]๊ฐ€ array[j + 1]๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ๋‘ ๊ฐ’์„ ๊ตํ™˜ํ•œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํฐ ๊ฐ’๋“ค์ด ๋ฐฐ์—ด์˜ ๋’ท์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

 

 

1
return array[array_len / 2];
cs

 

  • ์ •๋ ฌ๋œ ๋ฐฐ์—ด์˜ ์ค‘์•™๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • array_len / 2 ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ค‘์•™๊ฐ’์„ ์–ป๋Š”๋‹ค.

 

 

 

 


[3] ์ฃผ์˜ํ•  ์ 

 

โœ”๏ธ ํ˜„์žฌ ์ฝ”๋“œ์—์„œ array_len - i์™€ j + 1 ๋“ฑ์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ด ๊ฐ’๋“ค์ด ๋ฐฐ์—ด์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

 

 


[4] ์ถ”๊ฐ€ ํ•™์Šต

 

โœ๏ธ ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ž€? :

https://terms.naver.com/entry.naver?docId=2270437&cid=51173&categoryId=51173 

 

๋ฒ„๋ธ” ์ •๋ ฌ

๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort)์€ ์„œ๋กœ ์ด์›ƒํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋น„๊ตํ•˜๋ฉฐ ๊ฐ€์žฅ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋’ค๋กœ ๋ณด๋‚ด๋ฉฐ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ๋™์ž‘ ๊ณผ์ •์„ [๊ทธ๋ฆผ 8-3]์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์‚ดํŽด๋ณด์ž. โ‘  ์ฒซ ๋ฒˆ์งธ

terms.naver.com

 

 

โœ๏ธ ๋ฒ„๋ธ” ์ •๋ ฌ์— ๋Œ€ํ•œ C ํ”„๋กœ๊ทธ๋žจ:

https://terms.naver.com/entry.naver?docId=2270505&ref=y&cid=51173&categoryId=51173 

 

๋ฒ„๋ธ” ์ •๋ ฌ์— ๋Œ€ํ•œ C ํ”„๋กœ๊ทธ๋žจ

https://terms.naver.com/entry.naver?cid=51173&categoryId=51173&docId=2270505&ref=y

terms.naver.com

 

 

 


[5] ๋Š๋‚€ ์ 

 

๋ฒ„๋ธ” ์ •๋ ฌ์€ ๋ฐฐ์—ดํ•ด์•ผ ํ•˜๋Š” ์›์†Œ๊ฐ€ ์ปค์ง€๋ฉด ์ •๋ ฌํ•˜๋Š” ๋ฐ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๋‚˜์—๊ฒŒ๋Š” ๋ฒ„๋ธ” ์ •๋ ฌ์„ ์ด์šฉํ•˜๋Š” ๊ฒŒ ์ต์ˆ™ํ•˜๊ณ  ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด์—ˆ์ง€๋งŒ, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์ฐพ์•„๋ดค๋‹ค.

 

๋ฐ”๋กœ, 'qsort' ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

โœ๏ธ qsort ๋ž€?:

https://blog.naver.com/ygs1090/223105957292

 

(C์–ธ์–ด) qsort ํ•จ์ˆ˜๋กœ ์ˆซ์ž, ๋ฌธ์ž์—ด ์ •๋ ฌํ•˜๊ธฐ

์˜ค๋Š˜์€ qsortํ•จ์ˆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค. qsort๋Š” C์–ธ์–ด์—์„œ ์ œ๊ณตํ•˜๋Š” ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ...

blog.naver.com

 

'ํฌ์ธํ„ฐ', '๊ตฌ์กฐ์ฒด'  ๊ฐœ๋…์ด ์ต์ˆ™ํ•˜์ง€๊ฐ€ ์•Š์•„์„œ ๋ฒ„๋ธ” ์ •๋ ฌ์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋‚˜์ค‘์—๋Š” ๊ณต๋ถ€๋ฅผ ๋” ํ•ด์„œ qsort ํ•จ์ˆ˜๋„ ์ž˜ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ๋‹ค!