dansuh17 / dansuh_algorithms

My algorithms practices.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dansuh's Algorithm Practices

Problem types and notation:

  • 기본 알고리즘 / 기초 구현 (문제 x) : basics

  • 백준 Online Judge : baekjoon

  • Peking university online judge : POJ

  • Kakao coding challenges learning : kakao

  • Kakao 2017 채용 모의고사 : kakao-mock

Miscellaneous

RTFM - the best algorithm

read the fucking manual

Finding Rules || Brute Force

  • n queen problem haskell python3.6 (문제 - kakao 68)

    크기 n x n짜리 체스판에 퀸을 서로 죽일 수 없게 n개 놓을 수 있는 경우의 수 (또는 그 조합) 구하기

  • Knight's Tour - Warnsdorff's Rule haskell

    A linear (O(n)) solution heuristic called Warnsdorff's Rule. It proceeds the knight to squares having minimum number of onward moves. Generally, this problem is considered NP-hard since it is a Hamiltonian Path problem.

  • baekjoon 10875 - 뱀 python3.6 (문제)

    뱀 게임에서 뱀이 언제 죽는지를 맞추는 문제

  • kakao 157 - 하노이의 탑 java (문제)

    그 유명한 하노이의 탑 문제

Data Structures

Sets

  • kakao-mock 7 - 스티커 떼기 java

    String 조각을 가지고 전체 string을 최소한의 조각을 사용해서 만든다.

Priority Queue

Deque

Tree

  • basics - Binary Tree haskell

  • basics - Completely Balanced Tree haskell

  • basics - Huffman Code haskell prefix encoding

  • basics - Tree in Grid haskell fitting a tree inside a grid

  • basics - Construct Tree From Preorder & Inorder Sequences haskell

  • basics - Internal Path Length haskell

  • POJ 1308 Is it a tree? java 주어진 그래프가 트리인지 아닌지를 찾는 문제

  • baekjoon 1991 - 트리 순회 java (문제)

  • baekjoon 11725 - 트리의 부모 찾기 java (문제)

  • baekjoon 1167 - Radius of Tree java python3.6 (문제) #BFS

    트리에서 가장 거리가 먼 node 사이의 거리를 구하는 문제

  • baekjoon 1967 - 트리의 지름 java (문제)

  • baekjoon 2250 - 트리의 넓이와 깊이 java (문제)

  • baekjoon 1693 - 트리 색칠하기 java (문제)

  • baekjoon 1289 - 트리의 가중치 (Putevi) java (문제)

Union-Find

  • baekjoon 10216 - Count Circle Groups (Union-Find implementation) java (문제)

    그래프에서 서로 연결되어 있는 다른(disjoint) 그래프의 개수를 세는 문제. Disjoint set의 개수를 구하는 문제이므로 Union-Find 자료구조를 활용해 풀었다.

Sorting

Bubble Sort

Insertion Sort

Quicksort

Merge Sort

Heap Sort

Selection Sort

Graph

  • basics - Prim's Algorithm haskell

    Algorithm for finding Minimal Spanning Tree (MST)

  • basics - Welsh-Powell's Algorithm haskell

    Algorithm for graph k-coloring problem.

Breadth-First Search (BFS)

  • kakao 591 java (문제)

    컬러링북에서 같은 색으로 연결된 영역의 크기 및 영역의 개수를

  • baekjoon 1890 - 점프 java (문제)

    지도의 왼쪽 끝부터 오른쪽 끝까지 점프해서 이동할 수 있는 경우의 수 계산 - BFS 구현 버전 (TIMEOUT 에러)

  • baekjoon 1167 - 트리의 지름 java python3.6 (문제) #BFS #Tree

    트리에서 가장 거리가 먼 node 사이의 거리를 구하는 문제

  • baekjoon 10216 - Count Circle Groups java (문제)

    그래프에서 서로 연결되어 있는 다른 그래프의 개수를 세는 문제

  • baekjoon 14502 - 연구소 (삼성SW역량기출) python3.6 (문제)

    벽을 3개 세워 바이러스 침투를 막을 때, 가장 많은 공간을 구할 수 있도록 하는 방법을 계산하는 문제

Topological Sorting

Dynamic Programming

  • baekjoon 2293 - 동전 1 java (문제)

  • baekjoon 9251 - Longest Common Subsequence java Basic (문제)

  • baekjoon 9252 - Longest Common Subsequence 2 java Basic (문제)

  • baekjoon 11066 - 파일 합치기 java (문제)

  • baekjoon 1890 - 점프 java (문제)

    지도의 왼쪽 끝부터 오른쪽 끝까지 점프해서 이동할 수 있는 경우의 수 계산 - 다이나믹 프로그래밍으로 구현한 버전.

  • kakao 76 - 최적 행렬 곱셈 java (문제)

  • kakao-mock 4 - 정사각형 java

    0과 1로 이루어진 표에서 1로 이루어진 가장 큰 정사각형을 찾는 문제

  • kakao-mock 7 - String 만들기 java

    String 조각을 가지고 전체 string을 최소한의 조각을 사용해서 만든다.

  • baekjoon 14501 - 퇴사 (삼성SW역량기출) python3.6 (문제)

    퇴사 하기 전 n 일동안 상담을 최대한 빡세게 진행해서 가장 많은 돈을 벌었을 때 그 수익 계산.

  • kakao 73 - 올바른 괄호 java (문제)

    N개의 괄호쌍을 가지고 가능한 '올바른 괄호'의 조합의 개수를 구하는 문제.

  • baekjoon 1693 - 트리 색칠하기 java (문제)

Basic divide and conquer

  • baekjoon 7459 - k번째 숫자 시간초과 python3.6 (문제)

    큰 배열에서 k번째 숫자를 찾아내는 문제.

Quickselect

Shortest Path Algorithms

Dijkstra's Shortest Path

Bellman-Ford

  • basics - Bellman-Ford Algorithm python3.6

  • baekjoon 11657 - 타임머신 python3.6 (문제)

    도시 1부터 나머지 도시까지 가장 가까운 거리를 찾는 문제. 타임머신을 타고 갈 수 있어 음수 시간이 걸릴 수 있다. 음수 cycle이 존재하는 경우도 찾아낸다.

  • baekjoon 1865 - 웜홀 python3.6 (문제)

    웜홀을 이용해 출발 지점까지 과거로 돌아갈 수 있는지를 판단하는 문제.

Combinatorial Game

Math

  • GCD (greatest common divisor) haskell

    Finding GCD of two integers using Euclidean Algorithm.

  • swap with no temporary variables c (arithmetic) c (XOR)

  • kakao 73 - 올바른 괄호 java 카탈란수 (Catalan Number) (문제)

    N개의 괄호쌍을 가지고 가능한 '올바른 괄호'의 조합의 개수를 구하는 문제. 카탈란수의 다른 표현이다. 카탈란수는 n + 1의 leaf node를 가진 binary tree의 개수이다.

2017 Kakao Coding Test

1차 코딩테스트

#1 비밀지도

#2 캐쉬

아주 단순한 LRU 캐쉬 구현

#3 카카오 다트 게임

#4 뉴스 클러스터링 - wrong answer

두 string 사이의 Jaccard Index를 구하는 문제

#5 프렌즈 4 블록 - wrong answer

2 x 2 블록이 같으면 터지는 게임에서 최종적으로 터지게 되는 칸 개수

#6 셔틀버스 - wrong answer

주기적으로 운행되는 셔틀버스를 탈 수 있는 가장 늦은 시간을 구하는 문제

#7 추석 트래픽

추석 기간 동안 발생한 로그 목록 분석

About

My algorithms practices.


Languages

Language:Java 60.0%Language:Python 21.4%Language:C++ 11.7%Language:Haskell 5.5%Language:Kotlin 0.7%Language:C 0.3%Language:Go 0.2%Language:Scala 0.2%Language:Shell 0.0%