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

[C] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šค์ฟจ_7์ฃผ์ฐจ ๋ฌธ์ œ 1: ๋ฐฐ์—ด ์›์†Œ์˜ ๊ธธ์ด

waterproof 2023. 8. 20. 13:19

 

 

 


[1] ๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด ๋ฐฐ์—ด strlist๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. strlist ๊ฐ ์›์†Œ์˜ ๊ธธ์ด๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์„ retrunํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ strlist ์›์†Œ์˜ ๊ธธ์ด ≤ 100
  • strlist๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ํŠน์ˆ˜๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

strlist result
["We", "are", "the", "world!"] [2, 3, 3, 6]
["I", "Love", "Programmers."] [1, 4, 12]

 

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

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

  • ["We", "are", "the", "world!"]์˜ ๊ฐ ์›์†Œ์˜ ๊ธธ์ด์ธ [2, 3, 3, 6]์„ returnํ•ฉ๋‹ˆ๋‹ค.

 

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

  • ["I", "Love", "Programmers."]์˜ ๊ฐ ์›์†Œ์˜ ๊ธธ์ด์ธ [1, 4, 12]์„ returnํ•ฉ๋‹ˆ๋‹ค.

 

 

 


[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>
#include <string.h>
 
int* solution(const char* strlist[], size_t strlist_len) {
    int* answer = (int*)malloc(strlist_len * sizeof(int)); // ๊ธธ์ด ๋ฐฐ์—ด ํ• ๋‹น
 
    // ๊ฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๋Š” ๊ณผ์ •
    for (size_t i = 0; i < strlist_len; ++i) {
        answer[i] = strlen(strlist[i]); // ๊ฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐฐ์—ด์— ์ €์žฅ
    }
 
    return answer; // ๊ธธ์ด๊ฐ€ ์ €์žฅ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜
}
cs

 

#.2 ํ•ด์„

์œ„ ์ฝ”๋“œ๋Š” ๋ฌธ์ž์—ด ๋ฐฐ์—ด strlist์˜ ๊ฐ ์›์†Œ์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ , ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

 

 

1. #include ๋ฌธ: ์ด ์ฝ”๋“œ๋Š” ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ๋ฐ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ํ—ค๋” ํŒŒ์ผ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.


2. int* solution(const char* strlist[], size_t strlist_len): solution ํ•จ์ˆ˜๋Š” ์ •์ˆ˜ํ˜• ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ์ž…๋ ฅ์œผ๋กœ ๋ฌธ์ž์—ด ๋ฐฐ์—ด strlist์™€ ๊ทธ ๋ฐฐ์—ด์˜ ๊ธธ์ด strlist_len์ด ์ฃผ์–ด์ง„๋‹ค.


3. int* answer = (int*)malloc(strlist_len * sizeof(int));: ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•  ์ •์ˆ˜ ๋ฐฐ์—ด answer๋ฅผ ๋™์  ํ• ๋‹นํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค. strlist_len * sizeof(int)๋Š” strlist_len ๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐˆ๋งŒํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.


4. for (size_t i = 0; i < strlist_len; ++i) { ... }: for ๋ฃจํ”„๋ฅผ ํ†ตํ•ด ๊ฐ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„์„ ์ •์˜ํ•œ๋‹ค. i๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ strlist_len - 1๊นŒ์ง€ ์ˆœํšŒํ•œ๋‹ค.

5. answer[i] = strlen(strlist[i]);: strlen ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ strlist์˜ i๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ๊ทธ ๊ธธ์ด๋ฅผ answer ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ์š”์†Œ์— ์ €์žฅํ•œ๋‹ค.

6. 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

 

 

 

โœ๏ธ ์ •๋‹ต์œผ๋กœ๋Š” ์ธ์ •๋˜์—ˆ์ง€๋งŒ, ์ฃผ์˜ํ•  ์ ์ด ์žˆ๋‹ค.

 

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

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

์ถœ์ฒ˜: ์ฑ— GPT

 

 


[4] ๋Š๋‚€ ์ 

 

๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น... ๋งŽ์ด ํ•ด๋ด์•ผ ๋Š˜๊ฒ ์ง€? ๊ฐœ๋…๋„ ์ƒ์†Œํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ๋„ ์–ด๋ ต๋‹ค. 

 

ํ™”์ดํŒ…ํ•ฉ์‹œ๋‹ค...