[42서울] cpp08 구현
·
대외활동/42서울
CPP08은 템플릿, STL (Standard Template Library), 그리고 반복자와 같은 C++ 개념을 다루는 과제이다. C++ 반복자(iterator)란?반복자(iterator)는 C++의 STL(표준 템플릿 라이브러리)에서 컨테이너의 요소를 순회(traverse)하거나 접근(access)하기 위해 사용되는 추상화된 포인터이다.컨테이너 내부 구현에 독립적이며, 배열이나 연결 리스트 같은 자료구조를 한 가지 방식으로 순회할 수 있게 해준다. 반복자의 역할반복자는 컨테이너의 첫 번째 요소부터 마지막 요소까지 순회하는 데 사용됩니다.STL 알고리즘(std::sort, std::find 등)은 반복자를 통해 컨테이너와 상호작용합니다.반복자는 컨테이너의 세부 구현을 감춥니다. (추상화) ex00#i..
[42서울] cpp07 구현
·
대외활동/42서울
cpp07은 c++의 template에 관한 과제이다. ex00#ifndef TEMPLATE_HPP# define TEMPLATE_HPPtemplate void swap(T &a, T &b){ T tmp; tmp = a; a = b; b = tmp;}template T min(T a, T b){ return (a T max(T a, T b){ return (a > b ? a : b);}#endif //TEMPLATE_HPP  함수 템플릿 (Function Template)함수 템플릿은 특정 데이터 타입에 독립적인 함수를 정의할 때 사용된다. 예를 들어, 두 값을 교환하는 함수를 작성할 때 int, float, string 등 모든 데이터 타입에 대해 동일한 코드를 중복 작..
[Kotlin] 8. 코틀린 DSL(Domain-Specific Language) 소개와 작성 방법
·
프로그래밍 언어/Kotlin
이번 글에서는 코틀린의 DSL(Domain-Specific Language)에 대해 알아보겠습니다. DSL은 특정 도메인에 특화된 언어로, 복잡한 작업을 간단하고 읽기 쉽게 표현하는 데 유용합니다. 코틀린은 DSL을 작성하기에 적합한 언어적 특성을 가지고 있어 매우 강력합니다.1. DSL이란?DSL은 특정 문제를 해결하거나 특정 도메인을 표현하기 위해 설계된 작은 언어입니다.예를 들어, SQL은 데이터베이스 작업을 위한 DSL이고, HTML은 웹 문서를 표현하기 위한 DSL입니다.DSL의 장점읽기 쉽고 직관적이다.도메인 전문가(개발자가 아닐 수도 있음)도 이해하기 쉽다.특정 문제를 해결하기 위한 코드를 간결하게 작성할 수 있다.2. 코틀린에서 DSL 작성하기코틀린은 다음과 같은 언어적 특성을 통해 DSL..
[Kotlin] 7. 코틀린의 코루틴과 비동기 프로그래밍
·
프로그래밍 언어/Kotlin
이번 글에서는 코틀린에서 비동기 작업을 효율적으로 처리할 수 있는 코루틴(Coroutines)을 다루어 보겠습니다. 코루틴은 비동기 프로그래밍을 쉽고 읽기 좋게 만드는 코틀린만의 강력한 기능입니다.1. 코루틴이란?코루틴은 경량 스레드라고 생각할 수 있습니다. 스레드보다 훨씬 가볍고 효율적이며, 수천 개의 코루틴을 동시에 실행할 수도 있습니다.(1) 주요 특징비동기 코드를 동기 코드처럼 작성할 수 있습니다.기본적으로 스레드 차단(blocking)이 없으므로 자원을 효율적으로 사용할 수 있습니다.suspend 함수를 사용해 중단 가능한 작업을 작성합니다.2. 코루틴 시작하기코틀린에서 코루틴을 사용하려면 kotlinx.coroutines 라이브러리를 추가해야 합니다.Gradle 설정:implementation..
[Kotlin] 6. 코틀린 확장 함수와 표준 라이브러리 활용
·
프로그래밍 언어/Kotlin
1. 확장 함수(Extension Function)확장 함수는 기존 클래스에 새로운 함수나 속성을 추가하는 방법입니다. 클래스 코드를 수정하지 않고도 메서드를 추가할 수 있어 매우 유용합니다.(1) 확장 함수 정의fun String.addExclamation(): String { return this + "!"}val greeting = "Hello"println(greeting.addExclamation()) // "Hello!"this는 확장 함수가 호출되는 객체를 나타냅니다.확장 함수는 기존 클래스의 멤버처럼 사용할 수 있습니다.(2) 확장 함수 활용문자열의 확장 함수fun String.isEmail(): Boolean { return this.contains("@") && this.co..
[Kotlin] 5. 컬렉션과 함수형 프로그래밍
·
프로그래밍 언어/Kotlin
이전 글에서는 코틀린의 클래스와 객체를 다뤘습니다. 이번에는 코틀린의 컬렉션(List, Set, Map)과 함수형 프로그래밍의 핵심인 람다식과 고차 함수를 배워 보겠습니다.1. 컬렉션(Collection)코틀린의 컬렉션은 크게 읽기 전용과 변경 가능으로 나뉩니다. 컬렉션에는 List, Set, Map이 포함됩니다.(1) 리스트(List)읽기 전용 리스트listOf로 선언하며, 요소를 변경할 수 없습니다.val fruits = listOf("Apple", "Banana", "Cherry")println(fruits[0]) // "Apple"println(fruits.size) // 3변경 가능한 리스트mutableListOf로 선언하며, 요소를 추가, 삭제, 변경할 수 있습니다.val fruits = mu..
[React] React의 기술적인 특징
·
프론트엔드/React
React의 기술적인 특징 세 가지컴포넌트를 기반으로 UI를 표현화면 업데이트 구현이 쉬움화면 업데이트가 빠르게 처리됨 1. 컴포넌트 기반 UI컴포넌트는 React의 핵심 building block입니다UI를 독립적이고 재사용 가능한 조각들로 나눌 수 있습니다예시: 버튼, 카드, 네비게이션 바 등을 각각의 컴포넌트로 만들 수 있습니다// Button 컴포넌트 예시const Button = ({ onClick, children }) => { return ( {children} );}; 2. 쉬운 화면 업데이트 구현상태(state) 관리를 통해 데이터 변경 시 자동으로 화면이 업데이트됩니다useState, useReducer 등의 Hook을 사용해 간단하게 구현 가능합니다const..
[Kotlin] 4. 클래스와 객체
·
프로그래밍 언어/Kotlin
이전 글에서는 조건문과 반복문을 배웠습니다. 이번에는 코틀린의 객체지향 프로그래밍 개념을 다뤄보겠습니다. 클래스, 생성자, 속성, 메서드를 이해하고 실제 객체를 다루는 방법을 배워봅시다.1. 클래스(Class)클래스는 객체를 정의하는 청사진입니다. 코틀린에서는 class 키워드를 사용하여 클래스를 정의합니다.기본 클래스 정의class Person { var name: String = "" var age: Int = 0 fun introduce() { println("Hi, my name is $name and I am $age years old.") }}객체 생성Person 클래스를 사용하여 객체를 생성하고 속성과 메서드를 사용할 수 있습니다.val person = Pe..
[Kotlin] 3. 조건문과 반복문
·
프로그래밍 언어/Kotlin
조건문과 반복문이전 글에서는 코틀린의 변수, 자료형, 함수에 대해 배웠습니다. 이번에는 프로그램의 흐름을 제어하는 조건문과 반복문을 다루어 보겠습니다.1. 조건문코틀린은 전통적인 if와 else 외에도 when이라는 강력한 조건문을 제공합니다.(1) if 조건문if는 자바와 비슷하게 동작하며, 표현식으로 사용할 수도 있습니다.val number = 10// 기본 사용if (number > 0) { println("Positive number")} else if (number == 0) { println("Zero")} else { println("Negative number")}// 표현식으로 사용val result = if (number > 0) "Positive" else "Negat..
[Kotlin] 2. 변수, 자료형, 함수
·
프로그래밍 언어/Kotlin
1. 변수 선언코틀린에서는 두 가지 방식으로 변수를 선언할 수 있습니다: val과 var.(1) val: 읽기 전용 변수val은 한 번 값을 할당하면 변경할 수 없는 읽기 전용 변수를 만듭니다. 자바의 final 키워드와 유사합니다.val name = "Kotlin" // 값 변경 불가println(name)// name = "Java" -> 컴파일 오류!(2) var: 변경 가능한 변수var은 값을 변경할 수 있는 가변 변수를 만듭니다.var age = 25println(age)age = 26 // 값 변경 가능println(age) 2. 자료형코틀린은 변수의 자료형을 자동으로 추론합니다(타입 추론). 하지만 필요하다면 명시적으로 자료형을 지정할 수도 있습니다.기본 자료형Int: 정수형Double: 실..