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

[C] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šค์ฟจ_7์ฃผ์ฐจ ๋ฌธ์ œ 2: ์•„์ด์Šค ์•„๋ฉ”๋ฆฌ์นด๋…ธ

waterproof 2023. 8. 20. 09:32

 

 

 


๋ฌธ์ œ ์„ค๋ช…

๋จธ์“ฑ์ด๋Š” ์ถ”์šด ๋‚ ์—๋„ ์•„์ด์Šค ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋งŒ ๋งˆ์‹ญ๋‹ˆ๋‹ค. ์•„์ด์Šค ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋Š” ํ•œ์ž”์— 5,500์›์ž…๋‹ˆ๋‹ค. ๋จธ์“ฑ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ˆ money๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋จธ์“ฑ์ด๊ฐ€ ์ตœ๋Œ€๋กœ ๋งˆ์‹ค ์ˆ˜ ์žˆ๋Š” ์•„๋ฉ”๋ฆฌ์นด๋…ธ์˜ ์ž” ์ˆ˜์™€ ๋‚จ๋Š” ๋ˆ์„ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

0 < money ≤ 1,000,000

 

 

์ž…์ถœ๋ ฅ ์˜ˆ

money result
5,500 [1, 0]
15,000 [2, 4000]

 

 

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

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

  • 5,500์›์€ ์•„์ด์Šค ์•„๋ฉ”๋ฆฌ์นด๋…ธ ํ•œ ์ž”์„ ์‚ด ์ˆ˜ ์žˆ๊ณ  ์ž”๋ˆ์€ 0์›์ž…๋‹ˆ๋‹ค.

 

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

  • 15,000์›์€ ์•„์ด์Šค ์•„๋ฉ”๋ฆฌ์นด๋…ธ ๋‘ ์ž”์„ ์‚ด ์ˆ˜ ์žˆ๊ณ  ์ž”๋ˆ์€ 4,000์›์ž…๋‹ˆ๋‹ค.

 

 

 


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

 

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
 
int* solution(int money) {
    int* answer = (int*)malloc(2 * sizeof(int)); // ์ •์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ๋‹ด์„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ• ๋‹น
 
    int cups = money / 5500// ์•„๋ฉ”๋ฆฌ์นด๋…ธ ํ•œ ์ž”์˜ ๊ฐ€๊ฒฉ์€ 5500์›
    int remaining_money = money - cups * 5500// ๋‚จ์€ ๋ˆ ๊ณ„์‚ฐ
 
    answer[0= cups; // ์ตœ๋Œ€ ์•„๋ฉ”๋ฆฌ์นด๋…ธ ์ž” ์ˆ˜๋ฅผ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ์ €์žฅ
    answer[1= remaining_money; // ๋‚จ์€ ๋ˆ์„ ๋ฐฐ์—ด์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์— ์ €์žฅ
 
    return answer; // ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ์ €์žฅํ•œ ๋’ค ๋ฐ˜ํ™˜
}
cs

 

 

#.2 ํ•ด์„

1. #include ๋ฌธ:

์ด ์ฝ”๋“œ๋Š” ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ๋ฐ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์œ„ํ•ด ํ•„์š”ํ•œ ํ—ค๋” ํŒŒ์ผ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

2. int* solution(int money):

solution ํ•จ์ˆ˜๋Š” ์ •์ˆ˜ํ˜• ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ฆ‰, ๊ฒฐ๊ณผ๋Š” ์ •์ˆ˜ ๊ฐ’์„ ๋ฐฐ์—ด๋กœ ๋‹ด์•„์„œ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.

ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ๋Š” ๋ˆ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ money๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค.

3. int* answer = (int*)malloc(2 * sizeof(int));:

๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด answer๋ฅผ ๋™์  ํ• ๋‹นํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๋ฐฐ์—ด์€ ๋‘ ๊ฐœ์˜ ์ •์ˆ˜ ๊ฐ’์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋„๋ก ํ• ๋‹น๋œ๋‹ค.

malloc ํ•จ์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ํ•จ์ˆ˜์ธ๋ฐ, (int*)์€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •์ˆ˜ ํฌ์ธํ„ฐ๋กœ ์บ์ŠคํŒ…ํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

2 * sizeof(int)๋Š” ๋‘ ๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐˆ๋งŒํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

4. int cups = money / 5500;:

์•„๋ฉ”๋ฆฌ์นด๋…ธ ํ•œ ์ž”์˜ ๊ฐ€๊ฒฉ์€ 5500์›์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ž…๋ ฅ๋œ ๋ˆ money๋ฅผ 5500์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ๋Š” ์•„๋ฉ”๋ฆฌ์นด๋…ธ์˜ ์ž” ์ˆ˜์ธ cups๊ฐ€ ๊ณ„์‚ฐ๋œ๋‹ค.

5. int remaining_money = money - cups * 5500;:

๊ตฌ๋งคํ•œ ์•„๋ฉ”๋ฆฌ์นด๋…ธ์˜ ์ž” ์ˆ˜์— ๋”ฐ๋ผ ๋‚จ๋Š” ๋ˆ์„ ๊ณ„์‚ฐํ•œ๋‹ค. ์•„๋ฉ”๋ฆฌ์นด๋…ธ ํ•œ ์ž”๋‹น 5500์›์„ ์ง€๋ถˆํ•œ ๊ธˆ์•ก์„ cups ์ž” ์ˆ˜๋งŒํผ ๋นผ์ฃผ๋ฉด ๋‚จ์€ ๋ˆ์ด ๊ณ„์‚ฐ๋œ๋‹ค.

6. answer[0] = cups;์™€ answer[1] = remaining_money;:

๊ณ„์‚ฐ๋œ ์•„๋ฉ”๋ฆฌ์นด๋…ธ ์ž” ์ˆ˜ cups๋ฅผ ๋ฐฐ์—ด answer์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ์ €์žฅํ•˜๊ณ , ๋‚จ์€ ๋ˆ remaining_money๋ฅผ ๋ฐฐ์—ด answer์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์— ์ €์žฅํ•œ๋‹ค.

7. return answer;:

๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ์ €์žฅํ•œ ๋’ค, ๋™์  ํ• ๋‹น๋œ ๋ฐฐ์—ด์˜ ํฌ์ธํ„ฐ์ธ answer๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์—๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 


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

 

โœ๏ธ https://exponent.tistory.com/88

 

[C] Study: ๋™์  ๋ฉ”๋ชจ๋ฆฌ - (1) ๋™์  ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ž€?

(1) ๋™์  ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ž€? • ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์ •์ (static)๊ณผ ๋™์ (dynamic)์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. • ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น: ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ

exponent.tistory.com

 

 

โœ๏ธ https://exponent.tistory.com/89

 

[C] Study: ๋™์  ๋ฉ”๋ชจ๋ฆฌ - (2) malloc()๊ณผ free()

(2) malloc()๊ณผ free() • ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ ˆ์ฐจ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. • ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ ๋„์„œ๊ด€์—์„œ ์ฑ…์„ ๋นŒ๋ฆฌ๋Š” ์ ˆ์ฐจ์™€ ๋น„์Šทํ•˜๋‹ค. ๋„์„œ๊ด€์—์„œ๋Š” ํ•„์š”ํ•œ ์ฑ…์„ ์‹ ์ฒญํ•˜๊ณ  ์ฑ…์ด ์ค€๋น„๋˜๋ฉด ๋ฐ›์•„์˜ค๋Š” ๋‹จ

exponent.tistory.com

 

 

โœ๏ธ ๊ทธ๋Ÿฐ๋ฐ free()๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ ์ •๋‹ต์œผ๋กœ ์ธ์ •์ด ๋˜์—ˆ๋‹ค... ๋‚˜๋Š” free()๋ฅผ ๊ผญ ์จ์ค˜์•ผ ํ•˜๋Š” ๊ฑธ๋กœ ์•Œ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ—ท๊ฐˆ๋ ค์„œ ๋” ์•Œ์•„๋ณด์•˜๋‹ค. Chat GPT ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•Œ์•„๋ณด์•˜๋‹ค.

 

์ฃผ์–ด์ง„ ์ฝ”๋“œ์—๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์—†์–ด ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ํ•˜๋‚˜์”ฉ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


1. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ›„ ํ•ด์ œ: ์ฝ”๋“œ์—์„œ answer ๋ฐฐ์—ด์„ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋’ค์— ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์ด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ ํ›„์—๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ›„์— free(answer);๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

2.๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹คํŒจ ์ฒดํฌ: malloc ํ•จ์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ์‹คํŒจํ•  ๊ฒฝ์šฐ NULL์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹คํŒจ ์‹œ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๊ณ  ํ•œ๋‹ค.

์ „์— '๋™์  ๋ฉ”๋ชจ๋ฆฌ', 'ํŒŒ์ผ ์ž…์ถœ๋ ฅ' ๊ฐœ๋…์„ ํ™œ์šฉํ•ด์„œ ๋„์„œ ๋ชฉ๋ก ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์—ˆ๋˜ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ, ๊ทธ ๋•Œ๋„ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋•Œ๋ฌธ์— ๊ณ„์† ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ˆ ๊ผญ ๊ธฐ์–ตํ•˜๋„๋ก ํ•˜์ž!

 

 


[4] ๋Š๋‚€ ์ 

 

๊ฐœ๋…์„ ๊ผผ๊ผผํžˆ ๊ณต๋ถ€ํ•ด์•ผ ๊ฒ ๋‹ค!