SMALL

2026/05 52

[프로그래밍 기초] 함수형 프로그래밍 정리: map, filter, reduce 이해하기

함수형 프로그래밍함수형 프로그래밍은 프로그램을 함수 중심으로 구성하는 프로그래밍 방식이다. 객체지향 프로그래밍이 객체의 상태와 행동을 중심으로 프로그램을 구성한다면, 함수형 프로그래밍은 데이터를 함수에 넣고 그 결과를 받아 처리하는 흐름에 가깝다. 함수형 프로그래밍에서는 다음과 같은 생각이 중요하다.데이터를 직접 바꾸기보다 새로운 결과를 만든다.같은 입력에는 같은 출력을 내는 함수를 선호한다.작은 함수를 조합해 프로그램을 만든다. 예를 들어 숫자 리스트가 있다고 하자.numbers = [1, 2, 3, 4, 5] 이 숫자들을 모두 2배로 만들고 싶다면 반복문을 사용할 수 있다.numbers = [1, 2, 3, 4, 5]result = []for n in numbers: result.append(n..

STUDY 2026.05.29

[C언어] 포인터와 메모리 관리 개념 정리

포인터와 메모리 관리 C언어를 공부할 때 가장 어렵게 느껴지는 개념 중 하나가 포인터이다. 포인터는 메모리 주소를 저장하는 변수이다. 일반 변수는 값을 저장한다.int a = 10; 위 코드에서 a는 정수 10을 저장하는 변수이다. 그런데 컴퓨터 메모리 안에서 이 값은 어딘가의 주소에 저장된다.포인터는 바로 그 주소를 저장할 수 있는 변수이다.메모리 주소프로그램이 실행되면 변수는 메모리 어딘가에 저장된다.int a = 10; 이때 a라는 변수는 값 10을 가지고 있고, 동시에 메모리 주소도 가진다.변수의 주소를 확인할 때는 & 연산자를 사용한다.#include int main() { int a = 10; printf("%d\n", a); printf("%p\n", &a); retu..

STUDY 2026.05.29

[자료구조] 스택, 큐, 링크드 리스트 구현 개념 정리

스택, 큐, 링크드 리스트자료구조는 데이터를 어떤 방식으로 저장하고 꺼낼지 정하는 구조이다. 같은 데이터라도 저장 방식에 따라 삽입, 삭제, 탐색의 효율이 달라진다.이번 글에서는 기본 자료구조인 스택, 큐, 링크드 리스트를 정리해보고자 한다. 스택스택은 나중에 들어온 데이터가 먼저 나가는 자료구조이다.이를 LIFO(Last In First Out) 구조라고 한다. 쉽게 생각하면 접시를 쌓는 모습을 떠올리면 된다.접시를 하나씩 위에 올리고, 꺼낼 때는 가장 위에 있는 접시부터 꺼낸다. 먼저 들어온 데이터는 아래에 쌓인다.나중에 들어온 데이터는 위에 쌓인다.꺼낼 때는 가장 위의 데이터부터 꺼낸다. 스택에서 자주 사용하는 연산은 다음과 같다.push데이터를 스택에 넣는다.pop가장 마지막에 들어온 데이터를 꺼..

STUDY 2026.05.29

[프로그래밍 기초] 정적 타이핑, 동적 타이핑, 강타입, 약타입 정리

변수 타입프로그래밍 언어를 공부하다 보면 정적 타이핑, 동적 타이핑, 강타입, 약타입이라는 표현을 자주 보게 된다. 처음 보면 비슷해 보이지만, 이들은 서로 다른 기준으로 언어의 타입 시스템을 설명하는 말이다. 크게 두 가지 질문으로 나누어 이해하면 된다.타입을 언제 검사하는가?타입 검사를 얼마나 엄격하게 하는가?첫 번째 질문은 정적 타이핑과 동적 타이핑의 차이다.두 번째 질문은 강타입과 약타입의 차이다.타입이란?타입은 값의 종류를 의미한다. 예를 들어 다음 값들은 서로 다른 타입을 가진다.10 # 정수3.14 # 실수"hello" # 문자열True # 불리언 타입이 중요한 이유는 값의 종류에 따라 가능한 연산이 달라지기 때문이다. 숫자끼리는 더할 수 있다..

STUDY 2026.05.29

[컴퓨터 기초] 컴파일러와 인터프리터 차이 정리

컴파일러와 인터프리터프로그래밍 언어로 작성한 코드는 사람이 이해하기 쉬운 형태이다. 하지만 컴퓨터는 우리가 작성한 Python, C, Java 같은 코드를 그대로 이해하지 못한다. 컴퓨터가 실제로 실행할 수 있는 형태로 바꾸는 과정이 필요하다. 이때 사용하는 방식이 크게 두 가지로 나뉜다.컴파일 방식인터프리터 방식 컴파일 방식에서는 컴파일러가 사용되고, 인터프리터 방식에서는 인터프리터가 사용된다.컴파일러컴파일러(Compiler)는 소스 코드를 실행하기 전에 한 번에 기계어 또는 실행 가능한 형태로 변환하는 프로그램이다. 예를 들어 C언어로 작성한 코드는 컴퓨터가 바로 실행할 수 없다. 먼저 컴파일 과정을 거쳐 실행 파일을 만들어야 한다.소스 코드컴파일실행 파일프로그램 실행 C언어를 예로 들면 다음과 같은..

STUDY 2026.05.29

[객체지향] 객체지향 4대 특성 정리: 캡슐화, 상속, 다형성, 추상화

객체지향 4대 특성객체지향 프로그래밍은 프로그램을 객체들의 협력으로 바라보는 방식이다. 객체는 데이터와 기능을 함께 가진다.예를 들어 회원 객체라면 이름, 이메일, 비밀번호 같은 데이터를 가질 수 있고, 로그인하기, 정보 수정하기 같은 기능을 가질 수 있다. 객체지향의 대표적인 4대 특성은 다음과 같다.캡슐화상속다형성추상화 이 네 가지는 객체지향 코드를 더 안전하고, 재사용 가능하고, 변경에 유연하게 만들기 위한 핵심 개념이다.캡슐화캡슐화(Encapsulation)는 객체의 데이터와 기능을 하나로 묶고, 외부에서 내부 데이터에 함부로 접근하지 못하게 제한하는 것이다.쉽게 말하면 객체 내부의 중요한 값을 보호하는 방식이다. 예를 들어 은행 계좌 객체가 있다고 하자. 계좌에는 잔액이 있다.Account- b..

STUDY 2026.05.29

[소프트웨어공학] UML 다이어그램 종류와 용도 정리

UML 다이어그램UML(Unified Modeling Language)은 소프트웨어 구조와 동작을 그림으로 표현하기 위한 표준 모델링 언어이다. 코드만 보면 시스템 전체 구조를 한눈에 파악하기 어렵다.특히 여러 클래스가 어떻게 연결되어 있는지, 사용자가 어떤 기능을 사용하는지, 객체들이 어떤 순서로 메시지를 주고받는지 파악하려면 시각적인 표현이 도움이 된다. 이때 사용하는 것이 UML 다이어그램이다. UML은 소프트웨어를 개발하기 전에 설계를 정리하거나, 이미 만들어진 시스템을 문서화할 때 사용할 수 있다. UML을 사용하는 이유UML을 사용하면 복잡한 시스템을 더 쉽게 이해할 수 있다. 개발자끼리 말로만 설명하면 오해가 생길 수 있다.하지만 다이어그램으로 표현하면 클래스 관계, 기능 흐름, 객체 간 상..

STUDY 2026.05.29

[소프트웨어공학] SDLC 개발 방법론 정리: 폭포수, 나선형, 애자일/스크럼

SDLC 개발 방법론SDLC(Software Development Life Cycle)는 소프트웨어를 개발할 때 거치는 전체 생명주기를 의미한다. 소프트웨어는 단순히 코드를 작성한다고 완성되는 것이 아니다.요구사항을 분석하고, 설계하고, 구현하고, 테스트하고, 배포하고, 유지보수하는 과정을 거친다. 이 전체 흐름을 체계적으로 정리한 것이 SDLC이다.요구사항 분석설계구현테스트배포유지보수 SDLC 개발 방법론은 이 과정을 어떤 방식으로 진행할지 정하는 개발 방식이다.대표적인 방법론에는 폭포수 모델, 나선형 모델, 애자일 방법론이 있다.폭포수 모델폭포수 모델(Waterfall Model)은 가장 전통적인 개발 방법론이다.이름처럼 위에서 아래로 물이 흐르듯이 개발 단계가 순차적으로 진행된다.요구사항 분석설계구..

STUDY 2026.05.29

[네트워크] 무선 통신 정리: Wi-Fi, 블루투스, LTE/5G 쉽게 이해하기

무선 통신무선 통신은 케이블 없이 전파를 이용해 데이터를 주고받는 통신 방식이다.유선 통신에서는 랜 케이블이나 광케이블 같은 물리적인 선을 통해 신호가 이동한다. 반면 무선 통신에서는 공기 중으로 퍼지는 전파를 이용한다. 우리가 일상에서 사용하는 대표적인 무선 통신에는 Wi-Fi, 블루투스, LTE, 5G가 있다.Wi-Fi집, 학교, 회사, 카페에서 인터넷에 연결할 때 사용블루투스이어폰, 키보드, 마우스처럼 가까운 기기끼리 연결할 때 사용LTE/5G스마트폰이 이동통신망을 통해 인터넷에 접속할 때 사용 이 세 가지는 모두 무선 통신이지만 사용 목적과 범위가 다르다.Wi-FiWi-Fi는 무선 LAN 기술이다.유선 LAN에서 Ethernet을 사용하듯이, 무선 LAN에서는 Wi-Fi를 사용한다고 이해하면 쉽다..

STUDY 2026.05.29

[네트워크] LAN 프로토콜 정리: Ethernet과 CSMA/CD 이해하기

LAN 프로토콜LAN(Local Area Network)은 가까운 지역을 연결한 근거리 네트워크를 의미한다. 집, 학교, 회사, 카페처럼 비교적 좁은 범위 안에서 장치들이 연결된 네트워크가 LAN이다. LAN 안에서는 컴퓨터, 스마트폰, 프린터, 서버 같은 장치들이 서로 데이터를 주고받는다. 이때 LAN에서 데이터를 어떤 형식으로 보내고, 누가 언제 데이터를 보낼 수 있는지 정하는 규칙이 필요하다. 대표적인 LAN 프로토콜이 Ethernet이다. EthernetEthernet은 가장 널리 사용되는 LAN 기술이다.유선 LAN 환경에서 장치들이 데이터를 주고받기 위한 대표적인 방식이라고 볼 수 있다. 우리가 흔히 말하는 랜 케이블을 꽂아 인터넷을 사용하는 방식도 대부분 Ethernet 기반이다. Ethe..

STUDY 2026.05.29