전체 글

https://www.acmicpc.net/problem/1647 1647번: 도시 분할 계획 첫째 줄에 집의 개수 N, 길의 개수 M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 www.acmicpc.net 1. Logic 최소 스패닝 트리 기본 문제. 문제를 읽어보면 분리된 두 마을의 길들은 없앤다고 했기 때문에 1. 모든 마을을 연결하는 최소 스패닝 트리를 구하고 2. 스패닝 트리를 구성하는 원소값 중 최댓값을 원소의 합에서 빼서 정답을 도출한다. 2. Code Kruskal #include using namespace std; int v, e; vector ..
https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 1. Logic 최소 스패닝 트리 기본문제 오늘 MST(Minimum Spanning Tree) 최소스패닝 트리를 공부해서 풀이 방법인 크루스칼, 프림 두방식 모두 풀이해봤다. 2. Code Kruskal #include using namespace std; int v, e; vector graph; int parent[10001]; int find(..
1. IoC(Inversion of Control)이란? Inversion Of Control을 그대로 번역해 보면 제어의 역전이다. 기존 자바 프로그램에서는 각 객체들이 프로그램의 흐름을 결정하고 필요한 객체를 직접 new ~ 해서 객체를 생성하고 사용했다. 즉 모든 작업을 프로그래머가 제어하며 추상 객체가 아닌 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 다르게 말하면 의존성이 높은 코드를 만드는 것이다. 하지만 프로그램의 제어 흐름에 대한 권한을 직접 제어하는, 즉 의존성이 높은 코드는 코드의 유지 보수를 어렵게 하고 재사용을 방해한다. 그렇기 때문에 객체에 대한 제어권을 객체가 직접 가지고 있는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라고 한다. 프로그램은 내가 어떤 유형..
리액트를 공부하다가 for문을 통해 지출 값을 더해서 그래프를 올려야 되는데 작동이 안되서 보니 for문 문제였다. 이때 알게된 JavaScript의 for문에 대해 포스팅 하려고 한다. 먼저 내 React 프로젝트에서 ExpensesChart라는 컴포넌트가 부모 컴포넌트로부터 DUMMY_EXPENSES 배열을 전달받아서 amount 즉 가격을 더한다. 근데 여기서 배열에 담긴 amount값이 더해지지 않는 문제가 생겼다. // ExpensesChart가 props로 받는 배열 const DUMMY_EXPENSES = [ { id: "e1", title: "Toilet Paper", amount: 94.12, date: new Date(2020, 7, 14), }, { id: "e2", title: "N..
리액트로 지출 관리를 해주는 가계부 프로젝트를 진행중에 F12를 눌러 콘솔을 봤더니 Each child in a list should have a unique "key" prop.라는 Warning이 발생했다. 해당 Warning은 아래의 ExpenseList라는 컴포넌트에서 발생한 경고 메세지이다. ExpenseList 컴포넌트는 내가 산 물건의 정보를 입력하면 map에 담긴 내가 산 물건의 정보 + 입력한 정보를 ExpenseItem으로 보내서 출력하는 역할을 가지고있다. 아래의 코드를 보고 다시 살펴보자 const ExpensesList = (props) => { if(props.items.length === 0) { return Found no expenses.; } return ( {props...
1. 이중 연결 리스트란? 이중 연결 리스트란 단일 연결리스트와 다르게 양방향으로 노드가 이어진 리스트이다. 이중 연결 리스트는 이전 노드와 이후 노드가 이어져 있기 때문에 삽입 삭제 연산 시 이전, 이후 노드를 저장하지 않아도 되기 때문에 훨씬 유연하게 사용할 수 있다. 2. 이중 연결 리스트 구현 이번 이중 연결 리스트 구현은 Head와 Tail에 data가 들어있지 않은 더미(dummy)노드를 사용해서 구현했다. 2-1. 구조체 및 클래스 선언부 이중 연결 리스트는 노드 두개가 서로 연결 되어있기 때문에 이전 노드와 다음 노드를 포인팅하는 prev, next 구조체 포인터를 선언해줬다. struct Node { Node* prev; Node* next; int data; }; class Doubly..
https://www.acmicpc.net/problem/2210 2210번: 숫자판 점프 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다. www.acmicpc.net 1. Logic 5X5배열에 cnt도 6이기 때문에 브루트포싱 돌려도 시간 복잡도를 넘지 않는다! DFS로 해결했다 2. Code #include using namespace std; char graph[5][5]; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, -1, 0, 1}; unordered_sets; void sol..
프로세스가 운영체제로부터 메모리를 할당받게 되면 위와 같은 구조로 생성된다. 각 계층별 데이터를 주소가 낮은 순서대로 코드와 함께 보면서 살펴보자 Text section(.code) - 코스 코드를 실행 가능한 기계어 코드로 변환되어 저장돼 있는 영역. 함수나 명령문이 기계어로 변환되어 저장된다. - CPU는 이 부분에 있는 명령들을 하나씩 가져가서 처리한다. - 흔히 코드영역(Code Segment)라고도 한다. Data section 데이터 섹션은 전역변수와 정적변수(static)가 할당되는 공간이다. 또한 Data section은 초기화 된 변수(.data)와 초기화 되지 않은 변수(.bss) 영역으로 나뉜다. 초기화된 변수는 다시 상수를 보관하는 rodata부분과 초기화 된 전역변수를 저장하는 ...
https://www.acmicpc.net/problem/1189 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net 1. Logic 기본 DFS문제. 간단하게 T를 피해서 DFS 돌려주고 이동 거리가 맞는것만 count해주면 된다. 2. Code #include using namespace std; int r, c, k; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, -1, 0, 1}; char graph[6][6]; bool vis[6][6..
1. 프로세스란? 실행중인 프로그램을 프로세스라고 한다. OS에서의 프로세스란 작업의 단위를 의미한다. 컴퓨터 구조상으로 보면 CPU는 Main Memory에 있는 프로세스만 fetch할 수 있기 때문에 프로그램을 실행하기 위해서는 먼저 Storage(HDD, SSD)에 저장되어 있는 프로그램을 Main memory로 가져와야한다. Fetch하기 전 Main memory에 담긴 프로그램의 실행 정보들을 프로세스라고 한다. 이때 OS는 프로세스를 관리하는 일을 한다 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 스케줄링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰인다. Wikipedia 1-1. 프로그램? 프로세스? 프로그램이란 - 컴퓨터에서 어떤 작업을 위해 실행할 수 있는 정적..
보글보글소다
Conquer Mind, Conquer All