썸네일 [LINUX] VIM 단축키 설정 개요 VIM을 사용하다보면 경우에 따라서 VIM 설정을 켰다가 껐다가 하고싶을 때가 있다. 이럴 때 그런 설정들을 단축키로 만들어놓고 필요할 때마다 설정해줄 수 있다. 예를 들면 문자를 복사해서 파일에 붙여 넣으려고 할 때, 라인이 바뀔 때마다 들여쓰기가 되어서 이런식으로 복사가 되는 경우가 있다. int main() { printf("hello world!"); return 0; } autoindent를 끄고 붙여넣는다던지 paste옵션을 설정해주면 해결되겠지만 매번 이런 문제가 발생할 때마다 해주기엔 불편하기 때문에 단축키로 만들어 놓으면 보다 빠르게 해결할 수 있다. VIM 설정 단축키는 F1~F12 까지 설정할 수 있으며, vi ~/.vimrc파일에 vim 설정을 해줄 때 뒤에 = 과 같이 단축키..
썸네일 [백준/2606번/파이썬(Python)] 바이러스 문제 링크 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의..
썸네일 [Linux] VIM 테마(molokai) 수정하기 (Color Scheme) 개요 얼마 전 vim 테마로 molokai를 받아 적용했다. 그동안 매우 만족스럽게 사용했으나 딱 한가지 부분에서 불만족 스러웠다. 바로 마우스 커서를 괄호부분에 갖다대면 마우스 커서가 순간적으로 다른 부분으로 가는 것 같은 느낌을 받았다. 계속 적응하려고 해봤으나 도저히 적응이 되지 않아 테마 변경까지 고려했다. 그러나 이 테마만큼 마음에 드는 테마도 없었기 때문에 괄호부분만 어떻게 색깔을 변경해보려고 했다. 방법을 찾다 보니 나처럼 느끼는 사람들도 있어서 개발자에게 수정 요청을 한 사람도 있었다. https://github.com/tomasr/molokai/pull/44 revert MatchParen color changes by shime · Pull Request #44 · tomasr/molo..
썸네일 [Linux] Bash Shell에 git branch와 상태 표시 개요 쉘에서 Git을 쓰다보면 한번씩 불편한 경우가 있다. 직장에서 장비마다 같은 repository를 가지고 config만 다르게 빌드하다보니 동일한 repository를 여러개 받아놓고 쓰는데, 이때마다 이 폴더의 branch가 어디인지, 이전에 이 폴더에서 수정작업을 했었는지 종종 헷갈려서 실수하기도한다. 위 사진은 현재 집에서 공부용으로 사용하는 폴더다. 지금 사용하는 쉘에는 branch의 정보가 나타나지않아 일일히 git branch를 해서 branch 정보를 확인해야한다. 그래서 이번 기회에 쉘 프롬프트에 아예 git branch 정보와 수정 이력을 나타나도록 하려고 한다. 쉘 프롬프트에 branch 정보 표시 parse_git_branch() { git branch 2> /dev/null |..
썸네일 [Linux] VIM 테마 변경하기(Color Scheme) 개요 나는 WSL을 이용해서 Linux를 사용한다. WSL에 terminator을 이용해서 Linux GUI를 사용한다. 처음 입사할때부터 이렇게 쓰다 보니 다른프로그램보다 이게 익숙해졌다. 그리고 그동안 마음에 드는 테마를 찾지 못한 이유도 있지만 terminator 옵션중에 터미널 색상을 자체적으로 변경하는 것도 있어서 그동안 별다른 테마를 사용하지 않고 기본 테마를 사용해왔다. 그런데 이번에 회사에서 사용하는 개발서버 중 하나가 기본 테마가 이상하게 적용되어있어서 보기가 불편했다. 그래서 이번기회에 Vim 테마를 설치하고 적용하는 방법에 대해 작성해보려고 한다. vim 테마 위 사진이 지금 내가 사용하고 있는 기본 테마이다. 색이 너무 진해서 안보이는 글씨도 없고 딱히 불편한 것을 못 느껴서 이렇게..
[백준/2512번/파이썬(Python)] 예산 문제 링크 https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 문제 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다. 모든 요청이 배정될 수 없는 경우에는 특정한..
[백준/1919번/파이썬(Python)] 연속합 문제 링크 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000..
[백준/1929번/파이썬(Python)] 소수 구하기 문제 링크 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 예제 입력 3 16 예제 출력 3 5 7 11 13 풀이 시간초과에 주의(시간 복잡도 줄이는 방법 찾기) 시간을 단축시키기 위해 반..
[백준/1436번/파이썬(Python)] 영화감독 숌 문제 링크 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 문제 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 ..
[백준/1463번/파이썬(Python)] 1로 만들기 문제 링크 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 10^6보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예제 더보기 입력 1 2 출력 1 1 입력 2 10 출력 2 3..
[백준/1149번/파이썬(Python)] RGB거리 문제 링크 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은..
[백준/1932번/파이썬(Python)] 정수 삼각형 문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 예제 입력..