분류 전체보기
[Network] TCP와 UDP
Computer Networking: A Top-Down Approach, 7th Edition Computer Networking A Top-Down Approach Seventh Edition 을 참고하여 작성하였습니다. TCP ( Transmission Control Protocol ) 말그대로 전송 제어 프로토콜이다. Transmission Control Protocol을 줄여 TCP라고 부른다. TCP는 OSI 7계층에서 4계층인 전송 프로토콜에 해당한다. Internet Protocol인 IP와 함께 쓰인다. 흔히들 TCP/IP라고 칭한다. TCP/IP에서 TCP는 데이터의 조각들을 reliable하게 전송하기 위한 프로토콜이고, IP는 데이터를 빠르게 목적지까지 전송하기 위한 프로토콜이다. ..
[OS] 캐시 메모리
이 포스팅은 운영체제 공룡책 9판을 참고하여 작성되었습니다. 캐시 메모리 캐시 메모리란? 두 구성요소 간 액세스 시간이나 전송 속도의 차이가 큰 경우 성능을 향상하기 위해 사용하는 하드웨어 캐시. 혹은 메모리를 말한다. Name registers cache main memory solid state disk magnetic disk Typical size < 1 KB < 16MB < 64GB < 1 TB < 10 TB Implementation technology custom memory with multiple ports CMOS on-chip or off-chip CMOS SRAM CMOS SRAM flash memory magnetic disk Access time (ns) 0.25 - 0.5 0...
[백준/BOJ 알고리즘] 16236 아기상어 C++
> www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가�� www.acmicpc.net 아기 상어가 바다에서 엄마 상어 없이 얼마나 물고기를 잡아먹으며 버틸 수 있는가.. 하는 문제이다. 뚜루뚜두둡. 더 이상 먹을 물고기가 없을 때까지의 시간을 계산하여 출력하면 된다! 문제 조건이 생각보다 까다롭고 이해하기 어려워서 좀 헤맸던 문제이다... 처음엔 좌표와 비용을 갖는 이중pair(?) 자료형을 큐에 넣고 작업했는데, 시간초과가 나서 비용 정보를 갖는 배열을 생성해서 해결했다. 문제의..
[React.js] 고차 컴포넌트 HoC 에 대하여
이 포스트는 '실전 리액트 프로그래밍' 을 참고하여 작성되었습니다. 나는 코드를 작성할 때, 중복인 코드가 너무 싫다. 개발 과정에서 별 생각 없이 코드를 치다보면 어느새 중복된 코드밭이 되어었다. 그래서 항상 코드를 짜고 다시 그 중복을 제거하고자 코드를 리팩토링하는 어떻게보면 바보같은 짓을 반복하며 코딩했다. 사실 코드를 작성하는 개발자의 기본은 중복을 피하는 것이라고 생각한다. 리액트에서는 render 내에서 코드가 많이 작성된다. 중복되는(공통으로 사용되는) 여러 요소들은 컴포넌트화해서 사용하고, 중복되는 로직들은 함수로 빼서 사용한다. 그렇다면 중복으로 사용되는 컴포넌트의 로직은 어떻게 관리할까? 고차 컴포넌트 난 웹 지식이 거의 전무한 상태로 이미 꽤 진행된 프로젝트에 참여하게 되어 그 때 리..
[백준/BOJ 알고리즘] 1039 교환 C++
> www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 원래 이 문제를 풀 생각은 없었는데, 한 친구가 못 풀겠다고 같이 풀자고해서 풀게 되었다. 기존 그래프 탐색 문제와는 좀 다른 느낌이어서 나름 재밌게 풀었다. 문제의 핵심 N은 최대 999,999 의 값을 갖는다. 즉 최대 6자리 자연수라는 것. K가 10보다 작으니, 전부 구해도 된다. K번 연산을 한 동안 나온 최대값이 아닌, K번째 연산을 했을 때 나올 수 있는 최대값을 구해야한다. 큐를 이용하여 구현했는데, 큐에 담기게 될 것은, 각 자리의 숫자가 아닌 i (0 k) b..
[Algorithm] 깊이우선탐색 DFS 에 대하여
# 그래프 순회 (Graph Traversal) 그래프의 모든 정점을 방문하는 것, 방문하는 방법. 그래프 순회 다음과 같은 그래프가 있을 때, 4개의 정점(노드, vertex)을 확인할 수 있을 것이다. 1, 2, 3, 4 총 4개의 정점을 모두 방문하는 것. 이를 그래프 순회라 부른다. 그래프 순회 알고리즘 그래프 순회 알고리즘에는 대표적으로 두가지가 있다. 1. 깊이우선탐색, DFS 2. 너비우선탐색, BFS 이번 포스트에서는 깊이우선탐색, DFS에 대해서 다룰 것이다. DFS란 ? Depth-First-Search. 깊이우선탐색. DFS. 깊이를 우선적으로 고려하여 모든 정점을 순회하는 알고리즘. 더 이상 갈 수 있는 정점이 존재하지 않을 때까지 정점을 타고 내려간 후에, 갈림길까지 돌아가서 다시..
[백준/BOJ 알고리즘] 2573 빙산 C++
> www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 � www.acmicpc.net 오랜만에 알고리즘 풀다가 마음대로 안되서 화가 났던 문제이다..... 그래도 맞아서 기분 좋다. 기본적인 그래프 탐색을 통해 해결할 수 있는 문제이다. 난 DFS를 통해 구현했다. 문제의 핵심 빙산 높이가 담긴 배열의 가장자리는 모두 0 이므로, 탐색대상에서 제외해야한다. 각 빙산의 높이가 1년마다 얼만큼 녹을 지 상하좌우의 빙산을 탐색하여 모든 빙산의 녹는 정도를 구한 후에 빙산을 녹여야한다. 빙..
[백준/BOJ 알고리즘] 3190 뱀 C++
> https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제 설명이 잘 돼 있어 재밌게 풀었던 문제이다. 좌표를 나타내기 위해 pair를 사용하였다. 뱀이 차지하고 있는 공간(?)의 좌표를 큐에 담도록 한다. 기본적으로 뱀이 이동할 때 머리가 한칸 전진하고, 꼬리가 따라온다. 사과를 먹었다면 머리만 전진한다고 생각하면 이해가 쉽다. 머리가 한칸 전진 : 새로운 좌표를 큐의 front에 PUSH 꼬리가 따라옴 : 큐의 end 값을 POP 사과를 먹을 때 뱀..