목록전체 글 (255)
Joonas' Note
2014년부터 2019년까지 내가 github을 사용했던 흔적들을 모두 모아봤다.여기서 초록색(흔히 말하는 잔디)은 이 문서(GIthub - Learn how we count contributions)를 기준으로 색칠된다.어떤 레포지토리에 이슈를 적은 것, Pull Request 한 것, commit 한 것, 심지어는 start를 누른 것도 포함되는 것 같다.이렇게 모아서 보니 패턴이 없는 듯 있는 것 같기도 하고.. 사실, Github을 사용한 이유는 개인 데스크탑이 없어서 컴퓨터를 자주 옮기다보니까 저장소로만 사용했는데, 조금 더 지나서야 버전 관리를 이유로 사용할 수 있었다. 한참 더 지나서야 issue, PR 까지 사용했지만 이렇게 보니 생각보다 꾸준히 개발했나보다.
블로그 활동 자체는 2005년쯤 네이버 블로그에서 시작했지만,프로그래밍에 관련한 글을 적기 시작한 것은 2014년에 구글 블로그로 시작해서, 티스토리까지 꽤 오랜 시간이 지났다.작성한 글이 한 250개는 되는 것 같다. 그래서 한번 달력으로 내 흔적들을 확인해보고 싶었다.2015년은 군대에서 열심히 일을 한 것이 분명하다. 그 외에는 간간히 놓지 않고 글을 적으려 했나보다.내 커밋 기록도 한번 정리해봐야겠다.
링크: https://www.acmicpc.net/problem/5535문제각 날짜마다 입을 수 있는 옷들이 있고, 다음 날과 옷의 화려함의 차이가 최대한 크도록 옷을 고르는 문제이다.날짜마다 가능한 옷을 저장해둔다. 그 날에 한해서는 옷의 종류나 순서가 중요치않길래 화려함 정도를 넣어버렸다. 이제 각 날짜마다 옷을 하나씩 고른다면, 총 D일동안 N가지의 옷을 고르므로 경우의 수는 O(ND) 이다. 어떤 d번째 날에 A라는 옷을 골랐다고 치자. 그럼 d+1번째 날 이후로는 d번째 날에 A를 고른 영향이 계속 생긴다.즉, d번째 날에 a를 고른 이후로는 하나의 부분 문제로 볼 수 있다. 점화식을 dp[D][N] = D번째 날에 N번째 옷을 선택했을 때의 화려함의 최대값 으로 세우면 \(O(ND..
2017년에 회고록을 적으려 시도했으나, 처참히 실패했다. 괜히 어설프지 않은 글을 적어보려는 욕심이, 결국은 시작하지도 완성하지도 못했다.2019년 회고록은 그런 욕심 부리지 않고 생각나는대로 적을거다. 적진 못했지만, 2017, 2018년 그리고 2019년까지를 돌아보면 공통점이 있었다.알고리즘 문제풀이와 토이 프로젝트는 꾸준히 해왔었다. 내가 무얼 하고 싶은지를 말해주는 내 발자국들이겠다. 사실 2019년은 적을 내용이 별로 없다.1월부터는 계속 취업 준비로 자기소개서 적고, 내가 뭘 했었는지, 어떤 경험들을 했었는 지, 그 과정에서 무슨 생각을 했었는 지 스스로 정리하는 시간이 더 많았다. 이 시기에는 아마 이전 프로젝트들의 정리글이나 후기가 종종 올렸던 것 같다. 그런 와중에도 "뭘 더 만들어볼..
문제2019년 초에 신년을 맞아 싱가포르 국립대학교(NUS) 천재들과의 문제 배틀이 있었다.그 중 하나로, 빨간 화살표가 가리키는 방향에는 빨간 화살표가 2개만, 회색 화살표가 가리키는 방향에는 빨간 화살표가 2개가 아니도록 화살표를 색칠하는 문제가 있었다.규칙을 만족하는 포인트를 파악해서 논리적으로 연결해나가는 것이 맞지만, 우리는 컴퓨터가 있다.무식하게 모든 경우를 전부 확인해보자. 정말 답이 하나일까? 세로 4행, 가로 5열 총 전체 20개의 칸을 모두 색칠해보는 경우는, 각 칸을 색칠한다/하지않는다 2가지의 선택이 20개 칸마다 있는 것이므로O(220)이다. 색칠 후에는 각 화살표들이 모두 규칙을 만족하는 지 확인해야하므로 연산이 조금 더 붙지만, 그래도 3천만번 이하로 계산된다.이 ..
(venv/db) joonas@DESKTOP-JOONAS $ ~/DB test $ pip install psycopg2Requirement already satisfied: psycopg2 in c:\users\joona\venv\db\lib\site-packages (2.8.4)(venv/db) joonas@DESKTOP-JOONAS ~/DB test $ python manage.py migrateTraceback (most recent call last): File "C:\Users\joona\venv\db\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection self.connect() ....(중략).....

여기서 맞왜틀이란, "맞았는 데 왜 틀렸지?"에 줄임말입니다. 이 글은 알고리즘 문제 풀이(Problem Solving)를 하면서 종종 마주하는 "맞왜틀?"을 피하는 방법들을, 제가 아는 지식과 겪어본 경험을 토대로 정리해볼까 합니다. 코드의 구현과 관련한 깊은 내용들은 C/C++을 기준으로 이야기합니다. 문제를 푸는 환경 이제는 많은 문제 풀이 플랫폼과 온라인 저지 사이트들이 있습니다. 역사 깊은 UVa Online Judge부터 Algospot(알고스팟), Baekjoon Online Jubge, 프로그래머스까지 굉장히 다양하고 많아졌습니다. 각 사이트마다 채점 방식이나 결과가 다를 수 있으니, 이것을 먼저 찾아보고 이해하는 것이 좋습니다. 어떤 컴파일러로 채점하나요? 대부분의 사이트에서 C, C++..
나(I)는 8, 우리(WE)는 71이라는 말로 I=8, W=7, E=1 임을 알 수 있다. 3*3 마방진은 1에서 9 사이의 숫자를 채워서 각 행의 합, 각 열의 합, 그리고 두 대각선 위에 있는 수의 합이 모두 같게 만드는 고전 게임이다.그럼 위 문제는 아래처럼 생긴 3*3 칸을 채우는 마방진이다.정말 답이 하나밖에 없을까?코딩으로 모든 경우의 수를 전부 시도해보자!코드결과4 9 2 3 5 7 8 1 6 >> YOU = 539 total: 1 정말 답이 하나만 존재한다.