프로그래밍 언어 및 IT 정보 35

c# LINQ란?- 개념잡기

오늘은 c#에서 LINQ를 공부해보려한다. c#에서 데이터를 쿼리하고 조작할 때 개발자들은 종종 루프나 조건문 등 복잡한 논리를 작성해야하지만 c#에서는 이러한 작업들을 간소화하는 LINQ(Language-Intergrated Query) 라는 기능을 제공한다. 1. LINQ란? LINQ(Language-Intergrated Query)는 다양한 데이터 소스를 쿼리하고 조작하기 위한 일관되고 직관적인 방법을 제공하는 c#의 언어 확장 집합이다. LINQ를 사용하면 친숙한 SQL 유사 구문 또는 메서드 기반 접근 방식을 사용하여 개체, 컬렉션, 데이터베이스, XML 등을 쿼리할 수 있다. 2. LINQ의 이점은? 가독성과 표현력 : LINQ는 복잡한 데이터 작업을 간결하고 선언적인 방식으로 표현할 수 있도..

[R 프로그래밍] R 이란 무엇일까? - 소개

안녕하세요! 이번에 서점에 들러 다양한 책을 보던 중 R을 이용한 퀀트 투자 포트폴리오 만들기 라는 책을 구매하였습니다. 평상시 주식이나 재테크에 관심이 많았는데 생소한 R이라는 언어가 있어서 정보를 알아보던 중 알아 두면 정말 유용한 언어이자 통계나 빅데이터로도 활용도가 높은 언어라 함께 공부를 해보려 합니다! R이란 무엇일까 ? R은 단순한 프로그래밍 언어가 아닙니다. 통계 컴퓨팅 및 데이터 분석을 위해 특별히 맞춤화된 포괄적인 소프트웨어입니다. 데이터 작업을 원활하고 효율적으로 만드는 다양한 기능, 라이브러리 및 도구를 제공합니다. 복잡한 통계 분석을 수행하든, 데이터 시각화를 생성하든, 기계 학습 모델을 개발하든 관계없이 R은 필요한 유연성과 성능을 제공합니다. R의 용도? 1. 통계 분석 R은 ..

c# 대리자(Delegate)와 이벤트(Event) 개념잡기

오늘은 이벤트(Event)와 대리자(delegate)에 대해 글을 써보려 한다. C#의 핵심 개념 중 하나로, 이를 이용하여 이벤트 기반 프로그래밍을 구현할 수 있다. 1. 대리자(Delegates) 대리자는 C#의 중요한 개념 중 하나로, 메서드를 참조하는 타입이다. 대리자를 사용하면 매서드를 변수처럼 전달하고 호출할 수 있습니다. 대리자는 다음과 같은 상황에서 유용하게 사용된다. 1. 이벤트 처리 : 이벤트와 함께 대리자를 사용하여 이벤트 핸들러를 등록하고 호출할 수 있다. 이벤트가 발생하면 등록된 모든 이벤트 핸들러가 호출되어 처리된다. 2. 비동기 프로그래밍 : 대리자를 사용하여 비동기 작업을 처리할 수 있다. BeginInvoke 및 EndInvoke 매서드를 사용하여 대리자를 비동기적으로 호출..

c# Queue / Stack -자료구조

소프트웨어 개발에서 자료 구조는 핵심적인 역할을 수행한다. 데이터 저장, 조직화, 처리, 검색 등을 효율적으로 수행할 수 있는 방법들을 제공한다. 이를 통해 프로그램의 성능, 유지 보수성, 확장성 등 다양한 측면에서 이점을 얻을 수 있으므로 코딩을 하기 전 자료구조를 완벽하게 공부하는 것 또한 중요하다. 오늘은 C# 에서 기본적인 자료구조의 일종 Queue와 Stack을 공부해볼 예정이다. 1. 큐 (Queue) 와 스택(Stack) 이란? 활용 예시 Queue는 "대기열"이라는 뜻을 가지고 있으며, 데이터를 일시적으로 저장하는 선입선출(FIFO: First - In - First - Out) 방식의 자료구조이다. 우리 주변에서도 많은 예시를 볼 수 있는데, 가장 일반적 예시로는 은행의 창구나 대기열이 ..

c# Generics(제네릭) 이란

전 회사에서 Pyhton으로만 코딩하다 좋은 기회로 이직하게 되어서 C#을 다시 복습하고자 한다. 물론 기본적으로 전체를 훑는 게 아니라 그동안 잊고 있던 부분들을 다시 복습하기 위해서 글을 남긴다! 여러분도 같이 한번 훑어보면서 공부하는 글이 되길! 1. C# 제네릭(Generic) 이란? 제네릭(Generic)은 C# 프로그래밍 언어에서 제공하는 강력한 기능으로, 코드의 재사용성과 유연성을 향상해 주는 도구이다. 제네릭은 데이터 형식을 일반화하여 재사용 가능한 코드를 작성할 수 있게 도와준다. 제네릭을 사용하면 다양한 형식의 데이터를 처리하는 메서드와 클래스를 작성할 수 있으며 컴파일 시점에서 안정성을 보장해 준다! 그렇다면 제네릭은 언제 사용되는가? 1. 여러 데이터 형식에 대해 동일한 로직을 적용..

[Algorithm] 다익스트라(Dijkstra) 알고리즘 with c#

근 몇 년 동안 이직을 2번이나 하느라,, 굉장히 바쁜 하루하루를 살았어요 그러다 보니 블로그를 거의 안 들어오게 되었고 정신 차려보니...23년5월.. 다시 정신을 부여잡고 내가 배우고 공부한 것을 작성해 보기! 1. 다익스트라(Dijkstra) 알고리즘 다익스트라 알고리즘은 그래프에서 최단 경로를 찾기 위해 사용되는 알고리즘이다. 특정 출발점부터 다른 정점까지의 최단 경로를 구하는 문제를 해결하는 데에 적용된다. 다익스트라 알고리즘은 각 정점까지의 최단 거리를 점진적으로 계산하며, 그리디 알고리즘의 한 형태이다. 2. 다익스트라(Dijkstra) 알고리즘 활용분야 다익스트라 알고리즘은 다양한 분야에서 활용되는데, 대표적으로 길 찾기 애플리케이션 : 지도 서비스나 네비게이션 시스템에서 출발지와 목적지 ..

[opencv_python] 5. 이미지 컬러스페이스 (BGR,HSV,YUV)

저번 포스팅에 이어 opencv로 기하학적 변환 두 번째 공부를 진행해보겠습니다. 이번 강의에는 이미지의 컬러 스페이스를 다뤄보겠습니다. 저는 Visual studio code와opencv 4.5.5 버전을 이용하였습니다. Color 이미지와 다양한 색공간 opencv에서 이미지를 불러오게 되면 기본적으로 BGR 순서의 컬러 스페이스를 사용하고 있습니다. 컴퓨터로 이미지 색상을 표현하는 방법 중 제일 많이 사용되는 것이 RGB(Red, Green, Blue)입니다. opencv 는 반대 순서를 사용하고 있죠. import cv2 import matplotlib.pyplot as plt img = cv2.imread('torr.jpg',) plt.axis('off') plt.imshow(img) plt.s..

[Algorithm] python 알고리즘 관련 주요 라이브러리

오늘은 python에서 알고리즘 문제를 풀 때 도움이 되는 주요 라이브러리와 함수 등에 대해서 공부해보도록 하겠습니다. 내장 함수 sum( ): iterable 객체가 입력으로 주어졌을 때, 원소의 합을 반환 iterable : 반복가능한 객체 [ 리스트, 딕셔너리, 튜플, set 등 ] result= [1,2,3,4] print(sum(result)) 출력 : 10 max( ) : 2개의 파라미터 중 가장 큰 값을 반환 a = 10 b = 20 print(max(a,b)) 출력 : 20 min( ) : 2개의 파라미터 중 가장 작은값을 반환 a = 10 b = 20 print(min(a,b)) 출력 : 10 eval( ) : 수학 수식이 문자열 형태로 들어오면 해상 수식을 계산한 결과를 반환 resul..

[Algorithm] 정렬 알고리즘 with python

'정렬 알고리즘' 이란 정렬 알고리즘은 섞여있는 데이터를 순서대로 나열하는 것을 뜻합니다. 대표적인 정렬 종류 O(n²)의 시간 복잡도 (정렬할 자료의 수가 늘어나면 제곱에 비례해서 증가) 1. 버블 정렬(Bubble Sort) 2. 선택 정렬(Selection Sort) 3. 삽입 정렬(Insertion Sort) O(n log n)의 시간 복잡도 1. 병합 정렬(Merge Sort) 2. 퀵 정렬(Quick Sort) 1. 버블 정렬 (Bubble Sort) 버블 정렬이란 인접한 두 수를 비교하며 정렬해 나가는 방법으로 O(n²)의 느린 성능을 가지고 있습니다. 구현은 쉽지만 효율성이 가장 떨어지는 알고리즘입니다. arr = [6,5,3,1,8,7,2,4] for j in range(0,len(arr..

[Algorithm] 투포인터(Two Pointer) 알고리즘 with python

'투포인터' 란? 이름 그대로 두 가지의 포인터를 사용하여 문자열이나 배열(or 리스트)에서 원하는 값을 찾거나 반복문을 써야할 때 쓰기 좋은 방식입니다. 그냥 기본 방식인 탐색(반복문)을 쓰다 보면 시간이 오래 걸리거나 시간 초과가 걸리는 경우에 투포인터를 사용하면 메모리와 시간 효율성을 높일 수 있습니다! 시간복잡도 : O(N) 기본 탐색 반복문을 사용한다면 O(N^2) 투포인터는 2가지 방식이 있습니다 앞에서 시작하는 포인터와 끝에서 시작하는 포인터 빠른(Fast runner)가 느린 (slow runner)보다 앞서는 형식 형식 1. 앞에서 시작하는 포인터 끝에서 시작하는 포인터 쉬운 예제를 통해서 한번 이해해보도록 하겠습니다. Q . 주어진 배열에서 합이 27인 경우를 찾아라 풀이 1. 시작점(..