λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Programming/C language17

6 scanf ν•¨μˆ˜ (feat. format specifiers) C μ–Έμ–΄μ—μ„œ scanf ν•¨μˆ˜λŠ” ν‘œμ€€ μž…λ ₯μ—μ„œ ν˜•μ‹μ„ μ§€μ •ν•˜μ—¬ 데이터λ₯Ό μ½μ–΄μ˜€λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. scanf ν•¨μˆ˜λŠ” ν‚€λ³΄λ“œλ‚˜ λ‹€λ₯Έ μž…λ ₯ μ†ŒμŠ€μ—μ„œ μ‚¬μš©μžλ‘œλΆ€ν„° μž…λ ₯을 λ°›μ•„ λ³€μˆ˜μ— μ €μž₯ν•  λ•Œ 주둜 μ‚¬μš©λ©λ‹ˆλ‹€. μœ„μ˜ μ½”λ“œμ—μ„œ %dλŠ” μ •μˆ˜λ₯Ό μž…λ ₯λ°›λŠ” ν˜•μ‹ μ§€μ •μžμž…λ‹ˆλ‹€. &num은 λ³€μˆ˜ num의 μ£Όμ†Œλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. scanf ν•¨μˆ˜λŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν•œ μ •μˆ˜λ₯Ό μ½μ–΄μ™€μ„œ ν•΄λ‹Ή λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ˜ˆμ‹œλ„ ν™•μΈν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 더보기 #include // scanf -> ν‚€λ³΄λ“œ μž…λ ₯을 λ°›μ•„μ„œ μ €μž₯ int main(void) { int one, two, three; printf("μ„Έ 가지 μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ„Έμš© : "); scanf_s("%d %d %d", &one, &two, &three); printf("첫 번째 κ°’μ€μš” : %d\n.. 2024. 1. 23.
5 Operator C μ–Έμ–΄μ˜ μ—°μ‚°μžμ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. C μ–Έμ–΄λŠ” λ‹€μ–‘ν•œ μ—°μ‚°μžλ₯Ό μ œκ³΅ν•˜μ—¬ μ‚°μˆ , 논리, 비ꡐ, λŒ€μž… λ“± λ‹€μ–‘ν•œ 연산을 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λž˜μ—μ„œ λͺ‡ 가지 μ£Όμš”ν•œ μ—°μ‚°μžλ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€. 1) μ‚°μˆ  μ—°μ‚°μž (Arithmetic Operators) + (λ”ν•˜κΈ°) - (λΉΌκΈ°) * (κ³±ν•˜κΈ°) / (λ‚˜λˆ„κΈ°) % (λ‚˜λ¨Έμ§€) 2) 증감 μ—°μ‚°μž (Increment and Decrement Operators) 3) 관계 μ—°μ‚°μž (Relational Operators) == (κ°™μŒ) != (같지 μ•ŠμŒ) (크닀) = (ν¬κ±°λ‚˜ κ°™λ‹€) 4) 논리 μ—°μ‚°μž (Logical Operators) && (논리 AND) || (논리 OR) ! (논리 NOT) 5) λΉ„νŠΈ μ—°μ‚°μž (Bitwise Operators) x = 5 = 0 0 .. 2024. 1. 23.
4 Constant C μ–Έμ–΄μ—μ„œ μƒμˆ˜(Constant)λŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ λ³€ν•˜μ§€ μ•ŠλŠ” κ³ μ •λœ 값을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μƒμˆ˜λŠ” 주둜 ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©λ˜λŠ” κ°’ 쀑에 λ³€ν•˜μ§€ μ•Šμ•„μ•Ό ν•˜λŠ” κ²½μš°μ— μ‚¬μš©λ©λ‹ˆλ‹€. C μ–Έμ–΄μ—μ„œλŠ” μƒμˆ˜λ₯Ό λ‹€μŒ 두 가지 ν˜•νƒœλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 1) Const const ν‚€μ›Œλ“œλŠ” C μ–Έμ–΄μ—μ„œ μ‚¬μš©λ˜λŠ” ν•œ 가지 λ°©λ²•μœΌλ‘œ, λ³€μˆ˜λ₯Ό μƒμˆ˜λ‘œ μ„ μ–Έν•˜λŠ” 데에 μ‚¬μš©λ©λ‹ˆλ‹€. constλ₯Ό λ³€μˆ˜ μ„ μ–Έ μ•žμ— 뢙이면, ν•΄λ‹Ή λ³€μˆ˜λŠ” 값을 λ³€κ²½ν•  수 μ—†λŠ” μƒμˆ˜κ°€ λ©λ‹ˆλ‹€. 2) 기호 μƒμˆ˜(Symbolic Constant λ˜λŠ” 맀크둜 μƒμˆ˜) μ½”λ“œ λ‚΄μ—μ„œ 읽기 쉽고 μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•˜λ„λ‘ 이름을 λΆ€μ—¬ν•œ μƒμˆ˜μž…λ‹ˆλ‹€. #define μ „μ²˜λ¦¬κΈ°λ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•˜λ©°, 일반적으둜 λŒ€λ¬Έμžλ‘œ μž‘μ„±λ©λ‹ˆλ‹€. 일반적으둜 constλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 νƒ€μž… μ•ˆμ „μ„±μ΄λ‚˜ μ½”.. 2024. 1. 23.
3 Variable ν”„λ‘œκ·Έλž˜λ°μ—μ„œ λ³€μˆ˜λŠ” 데이터λ₯Ό μ €μž₯ν•˜κ³  μ°Έμ‘°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 이름이 뢙은 λ©”λͺ¨λ¦¬ κ³΅κ°„μž…λ‹ˆλ‹€. λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ 값을 μ €μž₯ν•˜κ³  μ‘°μž‘ν•˜λŠ” 데에 ν•„μˆ˜μ μΈ 역할을 ν•©λ‹ˆλ‹€. C μ–Έμ–΄μ—μ„œ λ³€μˆ˜λŠ” μ„ μ–Έλ˜κ³  μ‚¬μš©λ˜λŠ” 방식에 νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€. Cμ–Έμ–΄μ˜ 데이터 νƒ€μž… char C μ–Έμ–΄λŠ” μ΄ˆκΈ°μ—λŠ” UNIX 운영 체제λ₯Ό μœ„ν•΄ κ°œλ°œλ˜μ—ˆμœΌλ©°, 이 λ•Œ μ‚¬μš©λœ κΈ°κ³„λŠ” 8λΉ„νŠΈ(1λ°”μ΄νŠΈ) 크기의 문자λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것이 νš¨μœ¨μ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ charλ₯Ό 1λ°”μ΄νŠΈλ‘œ μ •μ˜ν•˜λŠ” 것은 λ‹Ήμ‹œ ν•˜λ“œμ›¨μ–΄μ˜ νŠΉμ„±μ— λΆ€ν•©ν•˜λŠ” κ²°μ •μ΄μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, char νƒ€μž…μ€ ASCII 문자 집합을 기반으둜 ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ASCIIλŠ” μ˜μ–΄ μ•ŒνŒŒλ²³, 숫자, 특수 문자 등을 7λΉ„νŠΈλ‘œ ν‘œν˜„ν•˜λŠ” 문자 인코딩 ν‘œμ€€μœΌλ‘œ, charκ°€ 1λ°”μ΄νŠΈμ΄λ©΄μ„œ 7λΉ„νŠΈλ‘œ ν‘œν˜„λ˜λŠ” 것은 AS.. 2024. 1. 22.
2 Hello world C μ–Έμ–΄λ‘œ "Hello, World!"λ₯Ό 좜λ ₯ν•˜λ €λ©΄, λ‹€μŒκ³Ό 같은 단계λ₯Ό λ”°λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ¨Όμ €, ν…μŠ€νŠΈ 에디터λ₯Ό μ‚¬μš©ν•˜μ—¬ μ•„λž˜μ™€ 같은 κ°„λ‹¨ν•œ C μ½”λ“œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€. ν…μŠ€νŠΈ λ°μ΄ν„°μ˜ 이름은 hello.c둜 μ„€μ •ν•©λ‹ˆλ‹€. 이제 μ €μž₯ν•œ νŒŒμΌμ„ μ»΄νŒŒμΌν•΄μ•Ό ν•©λ‹ˆλ‹€. gcc (GNU Compiler Collection)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ»΄νŒŒμΌν•  수 μžˆμŠ΅λ‹ˆλ‹€. 더보기 GCCλŠ” GNU Compiler Collection의 μ•½μžλ‘œ, μ—¬λŸ¬ 가지 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μœ„ν•œ 컴파일러λ₯Ό ν¬ν•¨ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ νŒ¨ν‚€μ§€μž…λ‹ˆλ‹€. 주둜 C, C++, Fortran, Ada, Objective-C, λ“± λ‹€μ–‘ν•œ 언어에 λŒ€ν•œ μ»΄νŒŒμΌλŸ¬κ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. GCCλŠ” λ¦¬λˆ…μŠ€ 운영 μ²΄μ œμ—μ„œ 널리 μ‚¬μš©λ˜λ©°, λ‹€λ₯Έ μœ λ‹‰μŠ€ 기반 μ‹œμŠ€ν…œ 및 μ—¬λŸ¬ λ‹€λ₯Έ ν”Œλž«νΌμ—μ„œ.. 2024. 1. 22.
1 C language - Why do we learn it C μ–Έμ–΄λŠ” 1972년에 벨 μ—°κ΅¬μ†Œμ˜ λ°λ‹ˆμŠ€ 리치(Dennis Ritchie)와 μΌ„ ν†°μŠ¨(Ken Thompson)에 μ˜ν•΄ 개발된 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μž…λ‹ˆλ‹€. C μ–Έμ–΄λŠ” μ‹œμŠ€ν…œ ν”„λ‘œκ·Έλž˜λ°μ— μ ν•©ν•˜λ©°, 운영 체제, 컴파일러, μž„λ² λ””λ“œ μ‹œμŠ€ν…œ λ“± λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œ 널리 μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 μ–Έμ–΄λŠ” μ €κΈ‰ 언어와 κ³ κΈ‰ μ–Έμ–΄μ˜ νŠΉμ§•μ„ λͺ¨λ‘ 가지고 μžˆμ–΄, ν•˜λ“œμ›¨μ–΄μ™€ λ°€μ ‘ν•˜κ²Œ μ—°κ²°λ˜λ©΄μ„œλ„ μƒλŒ€μ μœΌλ‘œ μ‚¬μš©μž μΉœν™”μ μž…λ‹ˆλ‹€. Cμ–Έμ–΄μ˜ νŠΉμ§• κ°„κ²°ν•˜κ³  κ°„λ‹¨ν•œ 문법 C μ–Έμ–΄λŠ” μƒλŒ€μ μœΌλ‘œ κ°„κ²°ν•œ 문법을 가지고 μžˆμ–΄ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ½”λ“œλ₯Ό λΉ λ₯΄κ²Œ μ΄ν•΄ν•˜κ³  μž‘μ„±ν•  수 있게 λ•μŠ΅λ‹ˆλ‹€. μ €μˆ˜μ€€ μ–Έμ–΄ νŠΉμ§• λ©”λͺ¨λ¦¬μ™€ ν•˜λ“œμ›¨μ–΄μ— 직접 μ ‘κ·Ό κ°€λŠ₯ν•œ νŠΉμ§•μ„ 가지며, μ΄λŠ” μ‹œμŠ€ν…œ ν”„λ‘œκ·Έλž˜λ°μ΄λ‚˜ ν•˜λ“œμ›¨μ–΄ μ œμ–΄μ— μ ν•©ν•˜κ²Œ λ§Œλ“­λ‹ˆλ‹€. 이식성 λ™μΌν•œ μ½”λ“œλ₯Ό μ—¬λŸ¬ ν”Œ.. 2024. 1. 22.
[Algorithm] Time complexity (μ‹œκ°„λ³΅μž‘λ„) μ‹œκ°„ λ³΅μž‘λ„λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄ μž…λ ₯ λ°μ΄ν„°μ˜ 크기에 λŒ€ν•΄ μ–Όλ§ˆλ‚˜ 효율적으둜 λ™μž‘ν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°œλ…μž…λ‹ˆλ‹€. μ’€ 더 κ΅¬μ²΄μ μœΌλ‘œλŠ” μ•Œκ³ λ¦¬μ¦˜μ΄ μž…λ ₯ 크기에 따라 μ†Œμš”λ˜λŠ” 계산 μ‹œκ°„μ˜ 증가 정도λ₯Ό ν‘œν˜„ν•©λ‹ˆλ‹€. μ‹œκ°„ λ³΅μž‘λ„λŠ” μ•Œκ³ λ¦¬μ¦˜μ˜ νš¨μœ¨μ„±μ„ λΆ„μ„ν•˜κ³  λ‹€λ₯Έ μ•Œκ³ λ¦¬μ¦˜κ³Ό λΉ„κ΅ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‹œκ°„λ³΅μž‘λ„λŠ” ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μž‘μ„±ν•œ μ½”λ“œμ˜ Running time을 μ˜λ―Έν•©λ‹ˆλ‹€. μœ„ 3쀄 짜리 μ½”λ“œμ˜ μ†Œμš” μ‹œκ°„μ€ 7ns μž…λ‹ˆλ‹€. 쒋은 ν”„λ‘œκ·Έλž¨μ΄λΌλ©΄ μ€€μˆ˜ν•œ 속도와 정확성이 λ’·λ°›μΉ¨λ˜μ–΄μ•Ό ν•˜κΈ°λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨μ˜ μ†Œμš” μ‹œκ°„μ΄ μ€‘μš”ν•˜λ‹€κ³  말할 수 μžˆμŠ΅λ‹ˆλ‹€. 그럼 반볡문의 κ²½μš°λŠ” μ–΄λ–¨κΉŒμš”? 'Outer loop'의 경우 5번 → n번일 경우 n번 'Inner loop'의 경우 25번 → n번일 경우 n^2번 = 5n^2 + .. 2024. 1. 21.
[자료ꡬ쑰] Data structure 자료ꡬ쑰(Data Structure)λŠ” 컴퓨터 κ³Όν•™ λΆ„μ•Όμ—μ„œ μ‚¬μš©λ˜λŠ” 도ꡬ듀 쀑 ν•˜λ‚˜λ‘œ, μš°λ¦¬κ°€ λ‹€μ–‘ν•œ μ’…λ₯˜μ˜ 데이터λ₯Ό 효율적으둜 μ €μž₯ν•˜κ³  λ‹€λ£° 수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” κ°œλ…μž…λ‹ˆλ‹€. 데이터λ₯Ό 컴퓨터에 μ €μž₯ν•˜λŠ” 것은 일상적인 과제 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ–΄λ–»κ²Œ 데이터λ₯Ό κ΅¬μ„±ν•˜λŠλƒμ— 따라 ν”„λ‘œκ·Έλž¨μ˜ μ„±λŠ₯, νš¨μœ¨μ„±, 그리고 λ©”λͺ¨λ¦¬ μ‚¬μš© 등이 크게 영ν–₯을 λ°›μŠ΅λ‹ˆλ‹€. μ΄λ•Œ μžλ£Œκ΅¬μ‘°λŠ” 마치 데이터λ₯Ό μ •λ¦¬μ •λˆν•˜λŠ” 도ꡬ 같은 역할을 ν•©λ‹ˆλ‹€. κ°„λ‹¨ν•œ λΉ„μœ λ‘œ μ„€λͺ…ν•˜μžλ©΄, μžλ£Œκ΅¬μ‘°λŠ” 데이터λ₯Ό λ‹΄λŠ” μƒμžλ‚˜ μ •λ¦¬λœ μ²΄κ³„λ‘œ 생각할 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 책을 μ •λ¦¬ν•˜λŠ” 방법에 따라 μ±…μž₯에 λ°°μ—΄ν•  μˆ˜λ„ 있고, μŠ€νƒμ²˜λŸΌ μŒ“μ•„λ‘˜ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이런 정리 방식에 따라 책을 μ°Ύκ±°λ‚˜ μΆ”κ°€ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μ΄λ‚˜ νš¨μœ¨μ„±μ΄ λ‹¬λΌμ§‘λ‹ˆλ‹€. 즉, μ±….. 2024. 1. 7.