talALGO

talALGO

탈알고는 지능순

코드포스

Codeforces Round #485 (Div.2)

이번꺼는 버추얼후기. A. Infinity Gauntlet map을 적극 활용하자. map이 없다고? 거짓말하지마세요 그런언어가 어딨어. source : https://codeforces.com/contest/987/submission/65464832 B. High School: Become Human xy 과 yx을 직접 구해서 비교하려면 당연히 터진다. 양 변에 로그를 씌워서 ylogx와 xlogy를 비교하자. source : https://codeforces.com/contest/987/submission/65465055 C.
3 min read
알고리즘

Radix Sort

오랜만에 나는 야호다. 오늘은 라딕스 소트라는걸 배워보자. 본인은 매우 애용한다. Counting Sort Radix Sort를 배우기 전에 우리는 Counting Sort에 대해 알아보아야 한다. 만약 다음과 같은 문제가 주어졌다고 하자. 1000만 개의 숫자가 주어진다. 각 숫자는 0 또는 1이다. 이를 정렬하라. 비교기반 정렬을 때리면, $$O(nlogn)$$으로 매우 오랜시간이 걸린다. 하지만 우리는
3 min read

BOJ 13510 트리와 쿼리 1

ㅎㅇ! 오랜만에 글 쓴다. 사실 그동안 센트로이드 디컴퍼지션 짜다가 짜증나서 얼른 이 문제로 갈아 탔다. 각설하고, 트리와 쿼리 1을 푸는 방법을 알아보자. 선행지식: Heavy Light Decomposition 문제: BOJ13510 우선, HLD 문제 잘 푸는 사람이 이 글을 볼 리는 없다는 가정하에 글을 쓴다. HLD를 배웠다면 HLD의 작동 메커니즘이 간선이 아닌, 노드
4 min read
자료구조

hash table을 구현해 보자

이제 학교에서 해우면서 PS에서 사용하는 자료구조 포스팅은 이게 아마 마지막일듯 싶다. Q. ??? 너는 학교에서 rb-tree도 안배움?? A. 배웠다. 근데 못짠다. 그리고 PS에서 실제 구현하는 사람이 있을까 싶다.... 우리는 map이 있자나!!!! 그리고 내가 rb-tree를 못짜고 map을 사용하는 방법도 모르기에 hash table을 구현해서 문제를 비벼오고 있다. Q. 이글에선 충돌 어떻게 처리할거임? A.
7 min read
백준

BOJ 17143 낚시왕

문제 : https://www.acmicpc.net/problem/17143 아마 코테시즌이 되면 백준에 질문이 가장 많이 올라오는 문제가 아닐까싶은 문제, 낚시왕이다. 개인적으로 기출로 나왔던 시뮬레이션 문제들이 대부분 디스크립션을 한 번에 알아보기 힘들어서 늘 몇 번씩 읽어봤었는데 이 문제는 바로 로직을 구성할 수 있을 정도여서 코드를 짜는데 그렇게 오래걸리지는 않았다. 이런 시뮬레이션 문제에서
6 min read

이중 연결 리스트를 구현해 보자

씹어먹는 C를 배우는 중에 연결 리스트를 구현하는 예제가 있었다. 구조체와 동적 할당을 배우기 아주 좋은 예제다. 하지만 나는 이미 STL의 뽕맛을 본 몸이라서 그냥 연결 리스트로는 만족할 수가 없었다. 그래서 STL list 의 흉내라도 낸, 양쪽에서 삽입/삭제가 O(1)에 가능한 이중 연결 리스트를 구현해 보았다. 리스트가 잘 작동하는지
4 min read

배열과 포인터

수많은 사람들의 머리를 터뜨려버린 배열과 포인터의 관계에 대한 나의 장렬한 전쟁기록을 남겨두기 위해서 이 글을 쓴다. 결론은 뻔하지만 배열은 배열이고 포인터는 포인터라는 것이다. 이 부분에 대해서 글을 쓴 어느 블로그에 들어가도 나와 있는 결론이다. 하지만 이걸 마음속 깊이 깨닫기 위해서는 누구나 머릿속에서 전쟁을 한번쯤 치르게 된다. 만약 이게 술술 이해되는
4 min read

[숏코딩] 함수 반환값 이용하기

숏코딩에서는 함수 반환값을 많이 사용한다. 이 글에서는 함수의 반환값을 이용하는 여러 예를 소개하고자 한다. 파일 끝날 때까지 입력받기 while(~scanf("%d",&n))printf("%d",n); scanf는 성공적으로 입력받은 인자의 개수를, 첫 번째 인자를 받기도 전에 input failure이 일어나면 EOF를 반환한다. * 파일의 끝에서 scanf()가 EOF 반환 * EOF = -1 * -1 은
2 min read
자료구조

Splay Tree

나는 야호다. 오늘은 Splay Tree에 대해 설명하겠다. Splay Tree는 무엇인가 Splay Tree는 균형이진탐색트리(Balanced Binary Search Tree, BBST)의 한종류이다. Splay Tree라는 이름이 붙은 건 Splay라는 재밌고도 신기한 연산을 사용하여 amortized $$O(log n)$$의 시간복잡도를 유지하기 때문이다. 설명에 앞서 균형이진탐색트리에 대해 잠깐 알아보고 가자. 이진탐색트리는 특정 데이터의 삽입, 삭제,
7 min read
리스프

Common Lisp을 위한 정규표현식

CL-PPCRE cl-ppcre는 PCREPerl Compatible Regular Expression를 커먼 리습에서 쓸 수 있도록 구현한 것이다. ppcre는 순수하게 리습으로 구현되어있어 다른 네이티브 라이브러리에 의존하지 않는다(PPCRE의 첫 글자인 P는 portable의 머리글자인데, 바로 이러한 이유이다). 그럼에도 불구하고 커먼 리습의 컴파일러 매크로를 이용하므로, 상당히 좋은 성능으로 동작한다. 커먼 리습 생태계에는 정규표현식을 처리하는 다양한 다른 라이브러리가
13 min read
자료구조

Persistent Segment Tree

다음과 같은 문제를 생각해보자. 크기가 N인 배열에서 주어지는 [l,r] 범위들의 합을 각각 구하여라. 어디서 본 것같지 않은가? 그렇다. hld 글을 시작했던 그 문제이다. 저 글에서 우리는 이 문제에 update를 얹고 배열을 트리형태로 바꾸었을 때 어떻게 처리해야할 지를 다루었는데 이번에는 문제를 약간 바꿔보겠다. 크기가 N인 배열에서 주어지는 [l,r] 범위의
7 min read

이맥스로 리스프 개발환경 구축하기

이맥스여야만 하는가? 리습 프로그램을 짜는 개발 환경으로는 이맥스가 거의 유일하다. 물론 다른 에디터들에도 리습을 위한 플러그인들이 존재하고, LispWorks라는 어썸한 IDE도 있지만, 다른 에디터를 위한 플러그인들은 이맥스에서 제공하는 것에 비해 빈약한 편이고, LispWorks는 상용 프로그램인데다 이맥스와 별 다르지 않은 환경을 제공한다. 그럼 어째서 이맥스가 그토록 특별한 리습 개발 환경이 될 수
9 min read
Fast Fourier Transformation
수학

Fast Fourier Transformation

나는 야호다. 오늘은 FFT에 대해 알아보겠다. 이의 이론적 배경을 위해서는 선형대수학에 대한 지식이 다소 필요할수 있으므로 알아서 잘 알아듣길 바란다. (설명은 할것이니 걱정안해도된다.) 선형대수학 기본 본인이 선형대수학에 자신이 있다면 이 부분은 과감히 넘겨도 좋다. 벡터에 대해서 들어본 적이 있는가? 보통 벡터라고 하면 떠올리는 게 고등학교 기하와 벡터에서 배우는 그 벡터일것이다.
5 min read
트러블슈팅

Virtual Box Ubuntu16.04 CPU 제한 풀기

ploffer11이다. Virtual Box 성능이 마음에 안들어서 CPU 개수를 보니 1개였다. 늘리려고 보니까 fix되서 움직이지도 않는다. 뭐가 문제인가? 크게 세가지의 에러 원인이 있는거 같은데 일단 대표적인 두개만 언급할 것이다. 1. Hyper - V 2. WSL 3. BIOS  - 이걸 잘 모름 여기 보던가 https://stackoverflow.com/questions/44562907/cant-enable-multiple-cpu-on-virtualbox 1, 2번에
1 min read
수학

넥슨 코딩테스트 기출 - ANUMBER

이번 포스팅에서는 넥슨 게임프로그래밍직군 테스트에 나왔던 문제인 A-NUMBER라는 문제의 풀이에 대해 포스팅 하고자 한다. 문제가 제법 어렵지만 차근차근 풀다보면 또할만하다. 제곱한 수의 끝에 자기 자신이 나오려면? 우선 가장먼저 해결해야될 문제는1~21억사이의 숫자 x에 대해 F(x)가 참인지 판별하는 방법이다. 정수를 문자열로 바꾼뒤 비교를 해도 되겠지만 얼핏봐도 꽤나 시간이 많이
7 min read