분류 전체보기
-
VIRTUAL 춘천마라톤 (10 km) - 2020.11.26일상/러닝(마라톤 기록) 2021. 2. 25. 08:39
지난 10월 24일 코로나19와 학교 생활로 운동량은 줄어들고 식습관은 배달음식들로 채워지고 불규칙한 생활패턴이 너무도 자연스러워진 내 모습을 보며 운동을 시작해야겠다고 마음을 먹었다. 그렇게 시작하게 된 러닝. 처음엔 가볍게 하루 5km 씩 매일 꾸준히 뛰어보자! 라는 마음가짐으로 시작했는데 하루하루 실천해 나가다 보니까 매일 5km 씩이나 뛴다는게 생각보다 엄청난 부지런함과 의지를 필요로 한다는 것을 알게되었다. 일단 하기로 마음먹었기에 한 달을 꾸준히 매일 5km 로 채우고 드디어 첫 번째 결실을 맺기 위해서 10km 마라톤에 도전했다. 매일 5km 씩 뛰는게 익숙해져서 10km 도 할만하지 않을까 라는 가벼운 마음으로 나갔는데 8km쯤부터 차원이 다르게 힘들어서 여기서 멈출까 백만번 생각했지만 아..
-
[Vim]vim 기본설정 및 팁Programming/기타 2020. 12. 10. 20:58
VIM(VI iMproved) : 리눅스 터미널 환경에서 사용가능한 대표적인 텍스트 편집기 vim 의 설정값은 .vimrc 파일을 수정함으로 변경할 수 있고, .vimrc 파일은 언제나 홈 디렉토리에 존재해야 한다. 1. .vimrc 파일 생성하기 cd ~ vim .vimrc 2. .vimrc 파일 설정하기 필자가 사용하는 개인 설정값을 아래 첨부합니다. 복사해가실 분은 아래 코드블럭을 사용해주시면 됩니다. if has("syntax") syntax on endif set autoindent set cindent set ts=4 set sts=4 set shiftwidth=4 set laststatus=2 set hlsearch set scrolloff=2 set showmatch set nocompat..
-
[알고리즘] 동적 계획법(Dynamic Programming) - 기본Programming/Algorithms 2020. 12. 9. 21:24
동적 계획법(Dynamic Programming) 짧게 줄여서 DP 라고 부르는 이 알고리즘은 분할정복(Divide and Conquer) 알고리즘과 마찬가지로 복잡한 문제를 여러 개의 부분 문제들(Sub-problem) 으로 나누어 푼 후, 그 결과를 이용하여 복잡한 문제를 푸는 알고리즘이다. 다만 분할정복 알고리즘과의 차이는 DP 에서는 각 부분 문제들간에 겹치는 부분이 존재한다는 것인데, DP 는 이러한 겹치는 부분들을 메모이제이션(Memoization) 이라는 기법을 사용하여 단 한 번만 계산하도록 함으로써 알고리즘의 작동 시간을 줄이는 게 핵심입니다. 그렇다면 메모이제이션이라는 것은 무엇인지 알아봅시다. 피보나치 수열을 예로 들면, 아래와 같이 Fib(0) ~ Fib(3) 은 동일한 값을 구하는..
-
[웹서버] 라즈베리파이로 홈 서버 만들기Programming/Server 2020. 10. 30. 11:04
안녕하세요 점점 날씨가 차가워지고 있네요. 오늘은 제가 집 어딘가 구석에 숨겨두었다가 어느날 이걸로 뭐 할 수 있는게 없을까? 해서 라즈베리 파이로 웹 서버를 만들게 된 이야기를 포스팅 해보려고 합니다. 마침 요즘 사이드 프로젝트로 책을 읽고 독후감을 쓸 수 있는 웹 사이트를 하나 만들고 있었는데 이 웹을 aws 같은 호스팅 서비스를 이용하지 않고 라즈베리파이를 이용해서 집에 직접 서버를 운영하기로 했습니다. 1. 웹 서버 설치하기 라즈베리 파이를 서버로 이용하기 위하여는 라즈베리 파이가 서버로서 동작할 수 있도록 웹 서버 소프트웨어를 설치해주어야 합니다. 일반적으로 많이 쓰이는 웹 서버 소프트웨어는 아파치(Apache), 엔진엑스(Nginx) 등이 있는데 라즈베리 파이라는 제한된 환경을 고려하여 아파치..
-
[포트포워딩] 라즈베리파이 외부접속하기Programming/Server 2020. 10. 24. 17:23
안녕하세요, 오늘 다를 주제는 라즈베리 파이에 관한 주제입니다. 요즘 사이드프로젝트로 웹 사이트를 하나 만들고 있던 와중에 방 정리를 하는데 예전에 구매해두었던 라즈베리 파이를 발견했습니다! 그 때 이번에 만드는 사이트는 이 라즈베리파이를 서버로 구동해보면 재밌겠다 라는 생각을 했습니다. 저는 평소에 주로 카페에서 공부를 하는데 문제는 라즈베리 파이를 들고다니기엔 번거롭다는 거였습니다. 그래서 포트포워딩을 통해 집에 연결해놓은 라즈베리파이를 외부에서 접속하는 방법에 대해 알아보고 포스팅 해보도록 하겠습니다. 1. 같은 네트워크에서 접속하기 우선 기본적으로 라즈베리파이와 같은 네트워크에 연결되어 있을 때는 단순 아이피 주소와 ssh 를 사용하여 접속할 수 있습니다. ifconfig 를 사용하여 라즈베리 파..
-
[C++ STL] 리스트(List)Programming/C++ 2020. 8. 8. 18:44
STL 은 C++ 표준 템플릿 라이브러리이고, 일반적으로 가장 많이 사용되는 라이브러리는 컨테이너 라이브러리 입니다. 컨테이너는 말 그대로 자료 형들을 담는 역할을 하고 STL 컨테이너는 list, vector, deque, map, set 이 있습니다. 이 포스트에서는 list 에 대해서 다뤄보겠습니다. List 의 자료구조는 연결 리스트로 되어 있다. List 는 앞뒤로 모두 이동이 가능한 이중연결 리스트로 이루어져 있습니다. 연결 리스트는 일반적인 배열과는 다르게 조금 복잡한 모양과 구현 과정을 가지는데요, 이러한 자료구조를 사용함으로써 얻는 몇 가지 이득이 있습니다. 길이가 가변적이다. 배열은 처음 설정할 때 그 크기를 정해줘야 하고, 이 크기를 넘어서는 데이터가 들어가면 컴파일 오류를 일으키는 ..
-
[C++ STL] 템플릿(Template)Programming/C++ 2020. 8. 5. 16:23
STL 이 Standard Template Library 의 약자이며 표준 템플릿들의 모음이라는 것을 알게 되었는데 이 템플릿(Template) 이라는 것이 도대체 뭘까요? '템플릿' 이라는 용어는 PPT 템플릿, 파일 템플릿 등 일상 생활에서도 많이 사용됩니다. 사전적 의미로는 '틀', '주형' 등의 의미로 무언가를 담거나 미리 정해두는 틀이라는 의미를 갖습니다. C++ 에서는 이러한 템플릿을 함수나 클래스를 담는 틀로써 사용합니다. 만약 여러분이 여러 명의 학생들을 가르치는 교수이고 이 학생들의 시험 성적을 분반, 성적 순으로 정렬하여 한 번에 볼 수 있도록 프로그램을 만들고 싶다고 하면 우선적으로 분반별로 학생들을 정렬해야 합니다. 이를 위해서 두 수를 비교하는 함수를 만들어 보도록 하죠. int ..
-
[알고리즘] 재귀(Recursion) - 하노이탑Programming/Algorithms 2020. 8. 4. 17:02
하노이의 탑은 3개의 기둥과 서로 크기가 다른 여러개의 원판들이 있을 때 이 원판들을 한 기둥으로부터 다른 기둥으로 옮기는 일종의 게임입니다. 게임을 시작하기 전 초기 상태는 3개의 기둥 중 하나의 기둥에 모든 원판들이 아래에서부터 크기가 큰 순으로 놓여져 있으며, 최종 목표는 이 원판들을 하나씩 옮겨서 순서 그대로 다른 기둥에 쌓는 것입니다. 이 때 2가지 규칙이 있습니다. 원판은 한 번에 한 개씩만, 기둥에서 기둥으로만 움직일 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 하노이탑은 재귀함수를 사용하여 해결할 수 있는 대표적인 문제입니다. 1, 2, 3번 기둥이 있고, n 개의 서로 다른 크기의 원판들이 있다고 할 때 1번 기둥에 쌓여져 있는 n 개의 원판들을 모두 3번 기..