전체 글

80세까지 코딩하는 것이 목표인 개발자의 골방
Trie 자료구조는 문자열을 저장하고 주어진 문자열에 겹치는 접두사(문자열)가 있는지 빠르게 검색할 수 있는 트리 자료구조이다. Trie 자료구조가 문자열을 저장하는 방법을 그림으로 살펴보자. 아래 그림은 Trie 자료구조를 이용해서 문자열 "TREE" 와 "TRIE" 를 저장한 모습이다. Trie의 특징은 사용하는 문자열 셋(a~f, A~F, '0'~'9') 을 이용해서 자식 노드를 생성한다는 점과 주어진 문자열을 순회하면서 재귀적으로 자식 노드를 생성한다는 것이다. 위에 그림의 경우 A~F 까지의 문자열 셋을 이용하고 문자 단위로 자식 노드가 생성되는 예시이다. 만약 전화번호를 저장한다면? 0~9 까지의 문자열 셋을 이용하는 것이다. 그럼 Trie 자료구조를 구현해보자. 아래는 영어 소문자로 이루어진..
· DB
재귀 테이블을 왜 사용하는지 생각해보았다. 1. 임시 테이블로써의 역할 2. 재귀의 특성을 활용해서 원하는 값으로 채워 넣은 테이블 생성 + ... 아직은 이 정도 밖에는 모르겠다. 우선 재귀 테이블을 사용하는 방법은 생각보다 간단했다. WITH RECURSIVE cte as ( SELECT 0 as HOUR// 0을 초깃값으로 지정하고 HOUR라는 별칭을 붙임 UNION ALL// 생성되는 모든 쿼리문을 합침 SELECT HOUR + 1 FROM cte// 재귀의 실행문과 같은 역할. HOUR의 값을 1씩 증가시킨다 WHERE HOUR < 24// 재귀의 실행 조건. HOUR가 24보다 작을 때 까지. 실행하면 HOUR의 값이 24에서 멈추게 된다. ) SELECT HOUR from cte; -- 결과..
밸만-포드 알고리즘은 다익스트라 알고리즘과 마찬가지로 그래프에 간선이 가중치를 가질 때 최단 거리를 구하는 알고리즘이다. 만약 그래프가 음수 간선을 가질 때 다익스트라 알고리즘 대신 사용하면 된다. 그럼 당연히 드는 의문이 있을 것이다. 다익스트라는 음수 간선이 있을 때 최단 거리를 구하지 못하는가? - 아니다. 꼭 그런 것만은 아니다. 음수 간선이 있어도 다익스트라가 최단 거리를 구할 수 있다. 위에 그래프는 단방향의 간선을 가지고 A->B로 가는 경로가 두 가지가 있다. 그래프를 대충 봐도 우리는 당연하게 A->B로 가는 최단 거리가 -1 임을 알 수 있다. 다익스트라도 이 상황에서는 최단 경로를 구할 수 있고, 결국 그래프에 음수 간선이 있더라도 다익스트라로 무조건 풀 수 없는 건 아니라는 뜻이다...
pg.10 지금까지 책은 계속해서 나에게 깨끗한 코드의 중요성을 설명하고 있다. 나쁜 코드를 사용하면 생산성이 낮아진다는 여러 가지 예시를 들었고, 결국 깨끗한 코드를 사용해야만 원초적인 목표를 달성할 수 있다는 결론을 제시했다. 책은 이어서 깨끗한 코드의 정의에 대해서 설명하고 있다. 저명한 개발자들의 다양한 의견이 있으므로 키워드와 짧은 문장으로 정리해야겠다. "우아한 코드", "효율적인 코드", "간결한 코드", "꼼꼼한 코드" "의도가 분명한 코드", "명쾌한(단호한) 추상화와 단순한 제어문으로 가득하다" "가독성이 좋은 코드", "다른 사람이 고치기 쉬운 코드", "테스트 코드가 있는 코드" "중복을 피하고, 한 기능만 수행하고, 제대로 표현하고, 작게 추상화하는 코드" 이 키워드를 아우르는 나..
바이러스 조건에 대한 설명이 참 부족한 문제 같다. 굉장히 많은 사람들을 혼란하게 만든 듯.. 나도 참 이해가 안됐었는데 이렇게 생각하니까 그나마 이해가 됐다. 1. 우리가 구하고자 하는 건 빈 공간에 바이러스가 퍼지는 시간이다. 즉 ( 2 == 활성, * == 비활성, 0 == 빈 공간) 2 0 0 * 이라면, 답은 2초이다. 2. 비활성 바이러스가 활성 바이러스가 되는 데 걸리는 시간은 1초가 맞다. 즉 2 0 * 0 이라면, 답은 3초이다. 3. 비활성 바이러스가 활성 바이러스가 되는데 걸리는 시간은 이런 경우에 고려할 필요가 없다. 즉 2 * * * 이라면, 답은 0초이다. 왜냐하면 승원이가 구하고자 하는 시간은 "빈" 공간에 바이러스(비활성, 활성 상관없음)를 전파시키는데 걸리는 시간이기 때문이..
· 리눅스
특정 포트 상태 확인 sudo lsof -i :{port}
· 리눅스
현재 커서 위치에서 아래쪽 탐색 /{문자열} 윗쪽 탐색 ?{문자열} 계속 탐색 "n" 이전 탐색 "N" 정규식 탐색 /^{문자열}
Velog가 있음에도 새롭게 시작한 이유는 더 글 쓰기 좋아보였다. Velog는 글을 나열하는 방식이 조금 난잡하다는 느낌이 들었다. 티스토리는 테마 커스텀이 가능해서 매력적이었다. 내 금붕어급 기억력을 돕기 위해서 앞으로 사소한 것 하나 하나 기록할 예정이다.
@xftg77g
뇌장하드