πŸ› οΈBackend/⚑Python

[Python] 1κ°• - μ»΄ν“¨ν„°μ˜ 이해

junbin2 2025. 4. 9. 17:32

1. 데이터와 정보

(1) λ°μ΄ν„°μ˜ κ°œλ…

- μ–΄λ–€ ν˜„μƒμ΄λ‚˜ 사싀에 λŒ€ν•œ μ„€λͺ… λ˜λŠ” μ„€λͺ…μ˜ 집합을 μ˜λ―Έν•œλ‹€.

 

(2) λ°μ΄ν„°μ˜ μ •μ˜

[1] 데이터 (data)

- κ΄€μ°°μ΄λ‚˜ μ‹€ν—˜, μ‘°μ‚¬λ‘œ 얻은 사싀

- 이둠을 μ„Έμš°λŠ”λ° κΈ°μ΄ˆκ°€ λ˜λŠ” 사싀 λ˜λŠ” 바탕이 λ˜λŠ” 자료

정리 : κ΄€μ°°μ΄λ‚˜ 츑정을 톡해 얻은 수치, 문자 ν˜•νƒœμ˜ ν‘œν˜„ν•  수 μžˆλŠ” μ§ˆμ λ˜λŠ” μ–‘μ μ˜ 값을 μ˜λ―Έν•œλ‹€.

 

(3) μ •λ³΄μ˜ κ°œλ…

- 문제 λ˜λŠ” μ§ˆλ¬Έμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•  수 μžˆλŠ” 데이터와 λ°μ΄ν„°μ˜ 집합을 μ˜λ―Έν•œλ‹€.

 

(4) μ •λ³΄μ˜ μ •μ˜

[1] 정보 (information)

- μ–΄λ–€ λ°μ΄ν„°λ‚˜ μ†Œμ‹μ„ ν†΅ν•˜μ—¬ 얻은 μ§€μ‹μ΄λ‚˜ μƒνƒœμ˜ μ΄λŸ‰

- κ΄€μ°°μ΄λ‚˜ 츑정을 ν†΅ν•˜μ—¬ μˆ˜μ§‘ν•œ 자료λ₯Ό 문제 해결에 도움이 될 수 μžˆλ„λ‘ μ •λ¦¬ν•œ 지식

정리 : κ΄€μ°°κ³Ό 츑정을 톡해 얻은 데이터λ₯Ό 처리(μ •λ ¬, ν•©μ‚°, κ΅°μ§‘ν™” λ“±)ν•˜μ—¬ μ‹€μ œ 문제 해결에 도움이 λ˜λŠ” 데이터 λ˜λŠ” 결과물을 μ˜λ―Έν•œλ‹€.

 

(5) 정보 처리 κ³Όμ •

- λ°μ΄ν„°λŠ” ν˜„μƒμ— λŒ€ν•œ κ΄€μ°°κ³Ό μΈ‘μ •μœΌλ‘œ 생성

- λ°μ΄ν„°λŠ” 기둝된 μ‚¬μ‹€μ΄μ§€λ§Œ, μ§μ ‘μ μœΌλ‘œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ”λ° 도움이 λ˜μ§€ μ•ŠμŒ.

- μ²˜λ¦¬μ™€ 가곡을 톡해 μ •λ³΄λ‘œ λ³€ν™˜μ„ ν•˜λŠ”λ° μ΄λŸ¬ν•œ μ²˜λ¦¬μ™€ 가곡이 "정보 처리 κ³Όμ •" 이닀.

 

(6) μ²˜λ¦¬μ™€ 가곡

- μˆ˜μ§‘λœ λ°μ΄ν„°μ˜ 집합을 μ •λ ¬, κ΅°μ§‘ν™”, 계산 λ˜λŠ” ν‘œν˜„λ°©λ²• λ³€κ²½ λ“±μ˜ 데이터λ₯Ό λ³€ν™˜ν•˜μ—¬ 정보λ₯Ό μƒμ‚°ν•˜λŠ” κ³Όμ •


2. μ»΄ν“¨ν„°μ˜ κ°œλ…

(1) μ»΄ν“¨ν„°μ˜ μ •μ˜

- λ°μ΄ν„°μ˜ 증가함에 따라 λ§Žμ€ 데이터λ₯Ό μ²˜λ¦¬ν•΄ μ •λ³΄λ‘œ λ§Œλ“€κΈ°μ—λŠ” 어렀움이 μžˆμ–΄ "컴퓨터"κ°€ λ§Œλ“€μ–΄μ‘Œλ‹€.

- μ»΄ν“¨ν„°λŠ” μ •μ˜λœ 방법에 따라 μž…λ ₯된 데이터λ₯Ό μžλ™μœΌλ‘œ μ²˜λ¦¬ν•˜μ—¬ 정보λ₯Ό μƒμ‚°ν•˜λŠ” 기계λ₯Ό μ˜λ―Έν•œλ‹€.

- 컴퓨터가 데이터λ₯Ό μ²˜λ¦¬ν•΄ μ •λ³΄λ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” 기계

 

(2) λ°μ΄ν„°μ˜ κΈ°λ³Έ λ‹¨μœ„

- μ»΄ν“¨ν„°λŠ” μžˆμ§€λ§Œ 처리λ₯Ό μœ„ν•΄μ„  μ»΄ν“¨ν„°μ—μ„œ 데이터λ₯Ό ν‘œν˜„μ„ ν•΄μ•Όν•˜κΈ° 떄문에 λ§Œλ“€μ–΄μ§„κ²ƒμ΄ λ°μ΄ν„°μ˜ λ‹¨μœ„μ΄λ‹€.

[1] λΉ„νŠΈ(bit, binary digit) / μ΄μ§„μˆ˜

- μ΄μ§„μˆ˜λ₯Ό ν™œμš©ν•΄ 두 κ°€μ§€ μƒνƒœλ‘œ 데이터λ₯Ό ν‘œν˜„ν•œ κ°€μž₯ μž‘μ€ λ‹¨μœ„μ΄λ‹€. ( 0은 off / 1은 on )

- bit ν•˜λ‚˜λ‹Ή ν•˜λ‚˜μ˜ on λ˜λŠ” offκ°€ 될 수 μžˆλŠ” 곡간이라고 μƒκ°ν•˜λ©΄ λœλ‹€. 즉, ν•œκ°œλ‹Ή 2개의 μƒνƒœλ₯Ό κ°€μ§„λ‹€. 

- 1 bit = on / off 총 2개의 ν‘œν˜„μ΄ κ°€λŠ₯함

- 2 bit = on : on / off : off / on : off / off : on 총 4개의 ν‘œν˜„μ΄ κ°€λŠ₯ -> 결둠은 을 μ˜λ―Έν•¨.

- 3 bit = 총 8개의 ν‘œν˜„μ΄ κ°€λŠ₯ -> κ²°λ‘  μ˜λ―Έν•¨.

- μ •λ¦¬ν•˜λ©΄ λΉ„νŠΈκ°€ λŠ˜μ–΄λ‚ μˆ˜λ‘ ν‘œν˜„ ν•  수 μžˆλŠ” λ²”μœ„λŠ” 2ⁿ 만큼 λŠ˜μ–΄λ‚œλ‹€. (λΉ„νŠΈκ°€ 제곱이 λœλ‹€.)

[2] λ°”μ΄νŠΈ(byte)

- ν•˜λ‚˜μ˜ λ°”μ΄νŠΈλŠ” 총 8개의 λΉ„νŠΈλ₯Ό κ°€μ§€κ³  μžˆλ‹€.

- μ˜ˆμ „ 컴퓨터 κ΅¬μ‘°μ—μ„œ 문자 ν•˜λ‚˜λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ μ²˜λ¦¬ν•˜λ €λ©΄ 8λΉ„νŠΈκ°€ λ”± μ λ‹Ήν–ˆμ—ˆλ‹€.

- κ·Έλž˜μ„œ 8λΉ„νŠΈλ₯Ό 1byteλΌλŠ” λ‹¨μœ„λ‘œ ν‘œμ€€μ„ μ •μ˜ν–ˆμŒ. ( 결둠은 제일 많이 쓰이기 λ•Œλ¬Έμ— λ§Œλ“€μ–΄μ§„ λ‹¨μœ„ )

- 8 bit = 2⁸ 이기 λ•Œλ¬Έμ— 총 256κ°€μ§€ κΉŒμ§€μ˜ μƒνƒœ ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ‹€.

- ν•΄λ‹Ή μ΄μ§„μˆ˜λŠ” 각각의 κ³ μœ ν•œ 값을 κ°€μ§€κ²Œ λ˜λ―€λ‘œ, μ›ν•˜λŠ” 숫자λ₯Ό μ΄μ§„μˆ˜λ‘œ ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ‹€.

 

(3) 컴퓨터와 2진법

[1] 이진법을 μ‚¬μš©ν•˜λŠ” 이유

- νŠΈλžœμ§€μŠ€ν„°μ˜ μƒνƒœκ°€ 이진법을 μ‚¬μš©ν•˜κΈ°μ— 맀우 μ ν•©ν•œ μƒνƒœλΌ 이진법을 μ‚¬μš©ν•˜κ²Œ 됨.

- νŠΈλžœμ§€μŠ€ν„°λŠ” 2κ°€μ§€μ˜ μƒνƒœλ₯Ό κ°€μ§€κ³  있음 ( μ „λ₯˜ 흐λ₯΄λŠ” μƒνƒœ / 흐λ₯΄μ§€ μ•ŠλŠ” μƒνƒœ )

- νŠΈλžœμ§€μŠ€ν„°μ— μ „λ₯˜κ°€ 흐λ₯΄λŠ” μƒνƒœλ₯Ό 1 μ „λ₯˜κ°€ 흐λ₯΄μ§€ μ•ŠλŠ” μƒνƒœλ₯Ό 0으둜 ν‘œν˜„ν•¨.

- νŠΈλžœμ§€μŠ€ν„°μ—λŠ” 이미터, 베이슀, μ½œλ ‰ν„° 총 3κ°€μ§€κ°€ 있음.

- μ΄λ―Έν„°μ—λŠ” μ „λ₯˜κ°€ 항상 흐둜고 있고, λ² μ΄μŠ€μ— νŠΉμ • 전압을 κ°€ν•˜λ©΄ μ½œλ ‰ν„°μ— μ „λ₯˜κ°€ 흐름

- 이 κ³Όμ •μ—μ„œ λ² μ΄μŠ€μ— 전압을 κ°€ν•˜κΈ° μ „μ—” 0 , κ°€ν•œ ν›„μ—λŠ” 1이 λ˜λŠ” 원리이닀.

- 결ꡭ은 νŠΈλžœμ§€μŠ€ν„° 1개λ₯Ό 1bit둜 λ³Ό 수 μžˆλ‹€.

 

(4) μ•„λ‚ λ‘œκ·Έμ™€ λ””μ§€ν„Έ

- 컴퓨터가 λ“±μž₯ν•˜λ©°, "μ•„λ‚ λ‘œκ·Έ"와 "λ””μ§€ν„Έ"μ΄λΌλŠ” 단어가 λ‚˜μ™€ ꡬ뢄을 ν•˜κΈ° μ‹œμž‘ν•¨.

[1] μ•„λ‚ λ‘œκ·Έ

- μ‚¬λ¬Όμ΄λ‚˜ κ°œλ…μ„ 연속적인 λ¬Όλ¦¬λŸ‰ κ°’μœΌλ‘œ ν‘œν˜„

- 즉, 연속적인 λͺ¨λ“  값듀을 ν‘œν˜„ν•  수 있음.

[2] λ””μ§€ν„Έ

- μ‚¬λ¬Όμ΄λ‚˜ κ°œλ…μ„ 이산적인 κ°’ 즉, λͺ¨λ“  것을 숫자둜 ν‘œν˜„μ„ ν•˜κ²Œ 됨.

- μ—°μ†μ μœΌλ‘œ λͺ¨λ“  값을 ν‘œν˜„ν•  수 μ—†μŒ. 즉, 쀑간에 μΌμ–΄λ‚˜λŠ” 과정을 ν‘œν˜„ν•  수 μ—†μœΌλ―€λ‘œ 이산적이닀.

* μ˜ˆμ‹œ : κ°€μž₯ 큰 μ˜ˆμ‹œλ‘œλŠ” "μ•„λ‚ λ‘œκ·Έ μ‹œκ³„" 와 "λ””μ§€ν„Έ μ‹œκ³„" κ°€ μžˆλ‹€.

[3] 정리

- λ””μ§€ν„Έ 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” μ»΄ν“¨ν„°λŠ” ν˜„μ‹€μ„Έκ³„μ˜ λ¬Όλ¦¬λŸ‰μ„ λͺ¨λ‘ ν‘œν˜„μ΄ λΆˆκ°€λŠ₯ν•˜λ©°, κ·Όμ‚¬ν•˜κ²Œλ§Œ ν‘œν˜„μ΄ κ°€λŠ₯함.

 

(5) 숫자 λ°μ΄ν„°μ˜ ν‘œν˜„

- ν˜„μ‹€ 세계에선 일반적으둜 10μ§„μˆ˜, 12μ§„μˆ˜ λ“± μ—¬λŸ¬ μ§„μˆ˜λ₯Ό μ‚¬μš©ν•¨.

- 반면, μ»΄ν“¨ν„°λŠ” 무쑰건 2μ§„μˆ˜λ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

- 즉, ν˜„μ‹€ μ„Έκ³„μ˜ 10μ§„μˆ˜λ‚˜ 12μ§„μˆ˜λ₯Ό 2μ§„μˆ˜λ‘œ λ³€ν™˜μ„ ν•΄μ•Όμ§€λ§Œ μ»΄ν“¨ν„°λ‘œ ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” 말이닀.

- 진법 λ³€ν™˜ 과정을 톡해 ν˜„μ‹€ μ„Έκ³„μ˜ 숫자λ₯Ό μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•œ λ’€ 컴퓨터가 μ΄ν•΄ν•˜κ²Œ λ§Œλ“œλŠ” 과정을 κ±°μΉœλ‹€.

 

(6) 문자 λ°μ΄ν„°μ˜ ν‘œν˜„

- ν˜„μ‹€ μ„Έκ³„μ˜ 문자의 μ’…λ₯˜λŠ” 맀우 λ‹€μ–‘ν•˜λ‹€. ( μ–Έμ–΄μ˜ μ’…λ₯˜λ„ μ—„μ²­ λ‹€μ–‘ν•˜κ³  많음 )

- ν˜„μ‹€ μ„Έκ³„μ˜ 문자λ₯Ό μ»΄ν“¨ν„°μ˜ μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ 즉, ν‘œν˜„ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œλŠ” 인코딩 체계λ₯Ό μ΄μš©ν•œλ‹€.

- "인코딩 체계"λž€ 문자λ₯Ό 숫자둜 λ°”κΎΈκ³ , κ·Έ 숫자λ₯Ό μ΄μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λŠ” 방법이닀.

[1] ASCII μ½”λ“œν‘œ

- κ°€μž₯ μ²˜μŒμ— λ§Œλ“€μ–΄μ§„ μΈμ½”λ”© 체계이닀.

- American Standard Code for Information Interchange의 μ•½μžλ‘œ λ―Έκ΅­ 정보 κ΅ν™˜ ν‘œμ€€ λΆ€ν˜Έλ₯Ό μ˜λ―Έν•œλ‹€.

- μ‰½κ²Œ 말해, 컴퓨터가 λ¬Έμžλ‚˜ 기호λ₯Ό 숫자둜 ν‘œν˜„ν•  수 μžˆλ„λ‘ λ§Œλ“  ν‘œμ€€ μ½”λ“œ 체계이닀.

- ν•΄λ‹Ή μˆ«μžκ°€ λ¬ΈμžμΈμ§€ μˆ«μžμΈμ§€ ꡬ별을 ν•˜κΈ° μœ„ν•΄ ꡬ별 정보λ₯Ό 별도 곡간 속에 μ €μž₯을 ν•˜λŠ” 방식을 μ΄μš©ν•¨.

* ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€λ³΄λ©΄ 데이터 νƒ€μž…μ„ μ‚¬μš©ν•˜λŠ”λ°, κ·ΈλŸ¬ν•œ 데이터 νƒ€μž…μ΄ λ¬Έμžμ™€ 숫자 λ“± μ΄λŸ°κ²ƒλ“€μ„ κ΅¬λΆ„ν•˜κΈ° μœ„ν•¨μž„.


3. μ»΄ν“¨ν„°μ˜ ν”„λ‘œκ·Έλž¨

(1) ν”„λ‘œκ·Έλž¨μ˜ 이해

- μ»΄ν“¨ν„°λŠ” 정보λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ 방법과 과정을 자의적으둜 결정을 ν•  수 μ—†λ‹€. 즉, 자의적 결정이 λΆˆκ°€λŠ₯ν•˜λ‹€.

- 컴퓨터가 μ–Έμ œ, 어디에 μ €μž₯λ˜μ–΄μžˆλŠ” 데이터λ₯Ό μ²˜λ¦¬ν•΄μ„œ κ·Έ κ²°κ³Όλ₯Ό 어디에 μ €μž₯μ‹œν‚€κ±°λ‚˜ 보여쀄지λ₯Ό μ •μ˜ν•΄μ•Όν•¨.

- 즉, 처리 방법과 과정이 μ •μ˜λœ λ‚΄μš©μ„ ν”„λ‘œκ·Έλž¨μ΄λΌκ³  ν•œλ‹€.

 

- ν”„λ‘œκ·Έλž¨μ€ λ‹¨μˆœνžˆ μ•Œκ³ λ¦¬μ¦˜μ„ κ΅¬ν˜„ν•œ 결과물이라고 λ³Ό μˆ˜λ„ μžˆλ‹€.

 

(2) μ•Œκ³ λ¦¬μ¦˜

- 문제λ₯Ό ν’€κΈ° μœ„ν•œ 단계별 절차λ₯Ό 체계적 λͺ…λ Ήμ˜ ν˜•νƒœλ‘œ κΈ°μˆ ν•œ 것

- μ‰½κ²Œλ§ν•΄, 곡톡점과 κ·œμΉ™μ„ μ°Ύμ•„ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 일련의 μ ˆμ°¨λ‚˜ 방법을 μ•Œκ³ λ¦¬μ¦˜μ΄λΌκ³  ν•œλ‹€.

- μœ μ‚¬ν•œ λͺ¨λ“  문제λ₯Ό ν’€κΈ° μœ„ν•œ 틀을 λ§Œλ“œλŠ” 것이 μ•Œκ³ λ¦¬μ¦˜ 일 수 μžˆλ‹€.

- μ΄λŸ¬ν•œ μ•Œκ³ λ¦¬μ¦˜μ„ κ΅¬ν˜„ν•œ 것이 ν”„λ‘œκ·Έλž¨μ΄λ‹€.

 

(3) ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

- μ‚¬λžŒκ³Ό 컴퓨터 μ‚¬μ΄μ˜ μ˜μ‚¬μ†Œν†΅ 도ꡬ

- μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ” μ–Έμ–΄λ₯Ό μ΄μš©ν•΄ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œ λ’€ μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ 컴퓨터가 싀행을 μ‹œν‚΄.

[1] ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ λΆ„λ₯˜

- ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄λŠ” 점점 μ‚¬λžŒμ΄ 읽기 μ‰½κ²Œ μ§„ν™”λ₯Ό ν•˜κ³  있음.

- 1μ„ΈλŒ€(μ €μˆ˜μ€€ μ–Έμ–΄) : 기계어 -> 0κ³Ό 1을 κ·ΈλŒ€λ‘œ μ¨μ„œ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“¦(λ„ˆλ¬΄ ν—·κ°ˆλ¦¬κ³  λ³΅μž‘ν•¨)

- 2μ„ΈλŒ€(μ €μˆ˜μ€€ μ–Έμ–΄) : μ–΄μ…ˆλΈ”λ¦¬μ–΄ -> λͺ…λ Ήμ–΄ μ˜μ–΄λ‘œ λŒ€μ²΄ν•΄ μ‚¬μš©μ„ 함.
- 3μ„ΈλŒ€(κ³ μ†Œμ€€ μ–Έμ–΄) : Python / C / Java / Rust -> μžμ—°μ–΄μ™€ μœ μ‚¬ν•œ μ–Έμ–΄

- 4μ„ΈλŒ€(κ³ μ†Œμ€€ μ–Έμ–΄) : Visual Basic -> μžλ™ν™” 마우슀 λͺ‡λ²ˆμ˜ 클릭으둜 ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“¦(νš¨μœ¨μ„±μ€ 떨어짐)

 

(4) ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰

- 3μ„ΈλŒ€ / 4μ„ΈλŒ€ κ³ μˆ˜μ€€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ λ§Œλ“€μ–΄μ§„ ν”„λ‘œκ·Έλž¨μ€ 컴퓨터 μ•Œμ•„λ³Ό 수 μ—†μŒ.

- 즉, μ•Œμ•„λ³΄κ²Œ ν•˜κΈ° μœ„ν•΄μ„œλŠ” κ³ μˆ˜μ€€ μ–Έμ–΄λ₯Ό 컴퓨터 κΈ°κ³„μ–΄λ‘œ λ³€ν™˜μ„ μ‹œμΌœμ€˜μ•Όν•¨.

- μ΄λ•Œ ν•„μš”ν•œκ²Œ, 컴파일러 / 인터프리터 이닀. ( μΌμ’…μ˜ λ²ˆμ—­κΈ°λΌκ³  μƒκ°ν•˜λ©΄ 됨 )