본문 바로가기

전체 글

(58)
(C#) 직렬화와 역직렬화 오늘은 C# Netonsoft 라이브러리를 사용해서 직렬화와 역직렬화에 대해서 공부해보겠습니다. 직렬화 (Serialization)객체의 형태를 통신을 할 때 사용하는 (예)Json과 같은 형태로 변환시키는 것이다.핵심은 데이터를 통신하기 쉽게 하나로 뭉쳐 연속적인 데이터의 형태로 바꾼다라고 생각하면 될 거 같다. 역직렬화 (Deserialization)역직렬화는 그에 반대되는 의미이다.(예)Json 같은 통신을 할 때 사용하는 형태를 객체의 형태로 변환시키는 것이다. 아래는 예시의 객체 형태이다.public class Person{ public string Name { get; set; } public int Age { get; set; } public DateTime BirthDat..
프로그래머스 Lv1 - 서버 증설 횟수 핵심 풀이 : 첫 번째는 핵심은 10시에 시작하면 (10 + k ) 까지의 시간까지 증설한 서버가 유지된다고 생각하였음두 번째는 현재 서버가 얼만큼 증설 되었는지를 알아야 하기에 currentV라는 변수를 사용해서 누적시켰음 나머지는 문제에 나오는대로 조건을 잘 지키면 됨 #include #include using namespace std;int solution(vector players, int m, int k) { int answer = 0; int currentV = 0; vector vec(25+k, 0); int ct = 0; for(auto i : players) { if(currentV
최소 스패닝 트리 - MST (크루스칼 알고리즘) 반갑습니다. 오늘은 최소 스패닝 트리 MST(Minimum Spanning Tree)에 대해서 공부해보겠습니다.MST ( Minimum Spanning Tree ) 란?기존의 그래프에서 신장 트리를 구성할 때 그 간선의 가중치 합이 제일 작은 신장 트 모든 정점이 연결되어있다.간선의 갯수는 정점의 갯수에 -1을 한 것이다.간선에 가중치가 존재한다.트리 이기 때문에 사이클이 존재하지 않는다.
위상 정렬 - Topological Sort ) 안녕하세요 오늘은 위상 정렬에 대해서 공부 해 보겠습니다. 위상 정렬에서 위상은 어떠한 사물이나 작업이 가지는 위치나 상태이고 그 위치들 간의 상호관계를 의미하고어떤 사물이나 작업들이 어떻게 연결되고 어떤 순서로 배치되어 있는지에 대한 구조적 관계를 의미합니다. 위상 정렬은 순서에 제약이 있는 작업들을 올바른 순서로 배열 하는 방법입니다.위상 정렬 알고리즘을 활용하려면 DAG(Directed Acycle Graph) 방향 비순환 그래프의 형태이여야 합니다.그리고 정렬의 올바른 결과는 하나 이상일 수 있습니다. 일상 속의 아침 준비시간을 예로 들어보겠습니다. 아침 작업양치하기세수하기머리 감기아침 먹기머리 말리기제약사항머리 감기는 머리 말리기 전 이어야 할 것아침 먹기 다음 양치하기 전 이어야 할 것 만약 ..
Thread 반갑습니다 오늘은 Thread를 공부 할 것 입니다. 그 전에 알고 가야 할 지식 메모리 (Memory)메모리는 프로그램이 실행되는 동안 데이터와 명령어가 저장되는 공간주 메모리(RAM) 와 보조 메모리(HDD, SSD)로 구분할 수 있다계층적 구조를 띄고 있습니다 (레지스터 -> 캐시 -> 주 메모리 -> 보조 메모리) - (용량, 접근 속도, 비용)이 절충 관계이다주소를 통해 접근을 합니다 레지스터 (Register)레지스터는 CPU 내부에 있는 매우 빠른 소형 저장 장치입니다.CPU가 연산을 수행할 때 직접 접근하는 가장 빠른 메모리이고데이터와 명령어를 일시적으로 저장한다 힙(Heap) 힙은 프로그램 실행 중에 동적으로 할당되는 메모리 영역런타임에 크키가 결정프로그래머가 명시적으로 메모리를 ..
비트마스크 알고리즘 오늘은 비트마스크에 대해서 공부하며 기록을 할 것입니다. 비트마스크란 무엇일까요 비트마스크비트마스크(Bitmask)는 컴퓨터 알고리즘에서 매우 효율적인 방법입니다2진순의 비트를 이용하여 상태를 표현하고 조작하는 기법입니다. 비트마스크의 장점 메모리 효율성: 작은 집합을 표현할 때 매우 효율적인 메모리를 사용할 수 있습니다.연산 속도: 비트 연산은 CPU에서 매우 빠르게 처리할 수 있습니다.간결한 코드: 복잡한 집합 연산을 간결하게 표현할 수 있습니다. 주요 비트 연산자AND ( & ): 두 비트가 모두 1인 경우에만 1을 반환 합니다.OR ( | ): 두 비트 중 하나라도 1인 경우에 1을 반환 합니다.XOR ( ^ ): 두 비트가 서로 다른 경우 1을 반환 합니다.NOT( ~ ): 비트를 반전 시킵니..
React Router Dom에 관하여 오늘은 React Router Dom에 관해서 공부 해볼까 합니다. 이런 라이브러리들을 설치 해서 대충 사용 해도 되지만 더욱더 원리와 구조를 이해하면서 공부를 하고 싶어서 정리를 해보려고 한다. 1. React Router Dom의 기본 개념 React Router Dom은 싱글 페이지 애플리케이션(SPA)에서 다중 페이지 애플리케이션처럼 동작하는 라우팅 시스템을 제공한다사용자가 URL을 변경할 때 페이지를 새로고침하지 않고 컴포넌트를 교체하는 방식이다 Route는 경로를 정하다라는 의미이다.즉 리액트의 경로를 정하는 문서 객체 모델이라는 뜻 임을 알 수 있다. 그럼 문서 객체 모델(DOM)이란 무엇일까? DOM(Document Object Model)웹 문서의 구조화 된 표현프로그래밍 언어가 웹..
백준 2230) 수 고르기 골드 5 투 포인터 풀이:  가장 중요한 부분은 투 포인터 알고리즘을 활용하여 해결 하는 것입니다. n이 100,000까지니까 시간 복잡도 O(n 제곱)은 당연히 안될꺼라는 것을 아실겁니다. 투 포인터로 빠르고 간단하게 순회하기 위해서 vector에 값을 입력받고 오름차순 정렬 시켜주면 됩니다.  그리고 투 포인터의 while 조건이 중요합니다 ->  while(i  당연히 i와 j는 n을 넘어가면 OutOfBounds 뜰 것 입니다. i가 j보다 커지는 것은 마이너스로 가기 때문에 m은 0 이상 값만 들어오니 i가 j를 넘어서는 상황은 고려하지 않습니다 #include #include #include using namespace std;int main() { long long n,m; cin >> n >> m;..