Repository: keon/algorithms
Pull request #297 (2018-06-01 16:07:30)

Create README_KR.md file that is korean translation of README.md 
translation of READ_ME file to korean.


coveralls: ## Pull Request Test Coverage Report for [Build 310](https://coveralls.io/builds/17274453)

* **0** of **0**   changed or added relevant lines in **0** files are covered.
* No unchanged relevant lines lost coverage.
* Overall coverage remained the same at **91.31%**

---



|  Totals | [![Coverage Status](https://coveralls.io/builds/17274453/badge)](https://coveralls.io/builds/17274453) |
| :-- | --: |
| Change from base [Build 304](https://coveralls.io/builds/17266764): |  0.0% |
| Covered Lines: | 2669 |
| Relevant Lines: | 2923 |

---
##### 💛  - [Coveralls](https://coveralls.io)


Patch:
diff --git a/README.md b/README.md
index f67925c..6006ba1 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-English | [简体中文](https://github.com/yunshuipiao/algorithms/blob/master/README_CN.md) | [Deutsch](README_GE.md) | [日本語](README_JP.md)
+English | [简体中文](README_CN.md) | [Deutsch](README_GE.md) | [日本語](README_JP.md)
 
 [![Open Source Helpers](https://www.codetriage.com/keon/algorithms/badges/users.svg)](https://www.codetriage.com/keon/algorithms)
 [![Build Status](https://travis-ci.org/keon/algorithms.svg?branch=master)](https://travis-ci.org/keon/algorithms)
@@ -56,8 +56,9 @@ If you want to uninstall algorithms, it is as simple as:
     - [delete_nth](algorithms/arrays/delete_nth.py)
     - [flatten](algorithms/arrays/flatten.py)
     - [garage](algorithms/arrays/garage.py)
-    - [josephus_problem](algorithms/arrays/josephus_problem.py)
+    - [josephus_problem](algorithms/arrays/josephus.py)
     - [longest_non_repeat](algorithms/arrays/longest_non_repeat.py/)
+    - [max_ones_index](algorithms/arrays/max_ones_index.py)
     - [merge_intervals](algorithms/arrays/merge_intervals.py)
     - [missing_ranges](algorithms/arrays/missing_ranges.py)
     - [plus_one](algorithms/arrays/plus_one.py)
@@ -86,19 +87,21 @@ If you want to uninstall algorithms, it is as simple as:
     - [shortest_distance_from_all_buildings](algorithms/bfs/shortest_distance_from_all_buildings.py)
     - [word_ladder](algorithms/bfs/word_ladder.py)
 - [bit](algorithms/bit)
+    - [add_bitwise_operator](algorithms/bit/add_bitwise_operator.py)
+    - [bit_operation](algorithms/bit/bit_operation.py)
     - [bytes_int_conversion](algorithms/bit/bytes_int_conversion.py)
+    - [count_flips_to_convert](algorithms/bit/count_flips_to_convert.py)
     - [count_ones](algorithms/bit/count_ones.py)
+    - [find_difference](algorithms/bit/find_difference.py)
     - [find_missing_number](algorithms/bit/find_missing_number.py)
+    - [flip_bit_longest_sequence](algorithms/bit/flip_bit_longest_sequence.py)
     - [power_of_two](algorithms/bit/power_of_two.py)
     - [reverse_bits](algorithms/bit/reverse_bits.py)
     - [single_number](algorithms/bit/single_number.py)
     - [single_number2](algorithms/bit/single_number2.py)
     - [single_number3](algorithms/bit/single_number3.py)
     - [subsets](algorithms/bit/subsets.py)
-    - [add_bitwise_operator](algorithms/bit/add_bitwise_operator.py)
-    - [bit_operation](algorithms/bit/bit_operation.py)
     - [swap_pair](algorithms/bit/swap_pair.py)
-    - [find_difference](algorithms/bit/find_difference.py)
     - [has_alternative_bit](algorithms/bit/has_alternative_bit.py)
     - [insert_bit](algorithms/bit/insert_bit.py)
     - [remove_bit](algorithms/bit/remove_bit.py)
@@ -214,6 +217,7 @@ If you want to uninstall algorithms, it is as simple as:
     - [set_covering](algorithms/set/set_covering.py)
 - [sort](algorithms/sort)
     - [bubble_sort](algorithms/sort/bubble_sort.py)
+    - [bucket_sort](algorithms/sort/bucket_sort.py)
     - [comb_sort](algorithms/sort/comb_sort.py)
     - [counting_sort](algorithms/sort/counting_sort.py)
     - [heap_sort](algorithms/sort/heap_sort.py)
@@ -222,6 +226,7 @@ If you want to uninstall algorithms, it is as simple as:
     - [merge_sort](algorithms/sort/merge_sort.py)
     - [quick_sort](algorithms/sort/quick_sort.py)
     - [selection_sort](algorithms/sort/selection_sort.py)
+    - [shell_sort](algorithms/sort/shell_sort.py)
     - [sort_colors](algorithms/sort/sort_colors.py)
     - [topsort](algorithms/sort/topsort.py)
     - [wiggle_sort](algorithms/sort/wiggle_sort.py)
diff --git a/README_CN.md b/README_CN.md
index bd0f313..d6e3340 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -1,4 +1,4 @@
-[English](https://github.com/yunshuipiao/algorithms/blob/master/README.md) | 简体中文 | [日本語](README_JP.md)
+[English](README.md) | 简体中文 | [Deutsch](README_GE.md) | [日本語](README_JP.md) 
 
 Python版数据结构和算法
 =========================================
@@ -69,8 +69,9 @@ pip3 uninstall -y algorithms
     - [delete_nth: 删除第n项](algorithms/arrays/delete_nth.py)
     - [flatten：数组降维](algorithms/arrays/flatten.py)
     - [garage：停车场](algorithms/arrays/garage.py)
-    - [josephus_problem: 约瑟夫问题](algorithms/arrays/josephus_problem.py)
-    - [longest_non_repeat：最长不重复子串](algorithms/arrays/longest_non_repeat.py/)
+    - [josephus_problem: 约瑟夫问题](algorithms/arrays/josephus.py)
+    - [max_ones_index](algorithms/arrays/max_ones_index.py)
+    - [longest_non_repeat：最长不重复子串](algorithms/arrays/longest_non_repeat.py/) 
     - [merge_intervals：合并重叠间隔](algorithms/arrays/merge_intervals.py)
     - [missing_ranges：遗失的范围](algorithms/arrays/missing_ranges.py)
     - [plus_one：加一运算](algorithms/arrays/plus_one.py)
@@ -101,7 +102,9 @@ pip3 uninstall -y algorithms
 - [bit：位操作](algorithms/bit)
     - [bytes_int_conversion：字节整数转换](algorithms/bit/bytes_int_conversion.py)
     - [count_ones：统计1出现的次数](algorithms/bit/count_ones.py)
+    - [count_flips_to_convert](algorithms/bit/count_flips_to_convert.py)
     - [find_missing_number：寻找缺失数](algorithms/bit/find_missing_number.py)
+    - [flip_bit_longest_sequence](algorithms/bit/flip_bit_longest_sequence.py)
     - [power_of_two：2的n次方数判断](algorithms/bit/power_of_two.py)
     - [reverse_bits：反转位](algorithms/bit/reverse_bits.py)
     - [single_number2：寻找出现1次的数（2)](algorithms/bit/single_number2.py)
@@ -196,6 +199,7 @@ pip3 uninstall -y algorithms
     - [set_covering：集合覆盖](algorithms/set/set_covering.py)
 - [sort：排序](algorithms/sort)
     - [bubble_sort：冒泡排序](algorithms/sort/bubble_sort.py)
+    - [bucket_sort](algorithms/sort/bucket_sort.py)
     - [comb_sort：梳排序](algorithms/sort/comb_sort.py)
     - [counting_sort：计数排序](algorithms/sort/counting_sort.py)
     - [heap_sort：堆排序](algorithms/sort/heap_sort.py)
@@ -204,6 +208,7 @@ pip3 uninstall -y algorithms
     - [merge_sort：归并排序](algorithms/sort/merge_sort.py)
     - [quick_sort：快速排序](algorithms/sort/quick_sort.py)
     - [selection_sort：选择排序](algorithms/sort/selection_sort.py)
+    - [shell_sort](algorithms/sort/shell_sort.py)
     - [sort_colors：颜色排序](algorithms/sort/sort_colors.py)
     - [topsort：top排序](algorithms/sort/topsort.py)
     - [wiggle_sort：摇摆排序](algorithms/sort/wiggle_sort.py)
diff --git a/README_GE.md b/README_GE.md
index 3c14f99..a257155 100644
--- a/README_GE.md
+++ b/README_GE.md
@@ -1,4 +1,4 @@
-[English](README.md) | [简体中文](https://github.com/yunshuipiao/algorithms/blob/master/README_CN.md) | Deutsch | [日本語](README_JP.md)
+[English](README.md) | [简体中文](README_CN.md) | Deutsch | [日本語](README_JP.md)
 
 [![Open Source Helpers](https://www.codetriage.com/keon/algorithms/badges/users.svg)](https://www.codetriage.com/keon/algorithms)
 [![Build Status](https://travis-ci.org/keon/algorithms.svg?branch=master)](https://travis-ci.org/keon/algorithms)
@@ -63,8 +63,9 @@ Um das Projekt zu deinstallieren tippen Sie folgendes:
     - [delete_nth](algorithms/arrays/delete_nth.py)
     - [flatten](algorithms/arrays/flatten.py)
     - [garage](algorithms/arrays/garage.py)
-    - [josephus_problem](algorithms/arrays/josephus_problem.py)
+    - [josephus_problem](algorithms/arrays/josephus.py)
     - [longest_non_repeat](algorithms/arrays/longest_non_repeat.py/)
+    - [max_ones_index](algorithms/arrays/max_ones_index.py)
     - [merge_intervals](algorithms/arrays/merge_intervals.py)
     - [missing_ranges](algorithms/arrays/missing_ranges.py)
     - [plus_one](algorithms/arrays/plus_one.py)
@@ -95,7 +96,9 @@ Um das Projekt zu deinstallieren tippen Sie folgendes:
 - [bit](algorithms/bit)
     - [bytes_int_conversion](algorithms/bit/bytes_int_conversion.py)
     - [count_ones](algorithms/bit/count_ones.py)
+    - [count_flips_to_convert](algorithms/bit/count_flips_to_convert.py)
     - [find_missing_number](algorithms/bit/find_missing_number.py)
+    - [flip_bit_longest_sequence](algorithms/bit/flip_bit_longest_sequence.py)
     - [power_of_two](algorithms/bit/power_of_two.py)
     - [reverse_bits](algorithms/bit/reverse_bits.py)
     - [single_number](algorithms/bit/single_number.py)
@@ -221,6 +224,7 @@ Um das Projekt zu deinstallieren tippen Sie folgendes:
     - [set_covering](algorithms/set/set_covering.py)
 - [sort](algorithms/sort)
     - [bubble_sort](algorithms/sort/bubble_sort.py)
+    - [bucket_sort](algorithms/sort/bucket_sort.py)
     - [comb_sort](algorithms/sort/comb_sort.py)
     - [counting_sort](algorithms/sort/counting_sort.py)
     - [heap_sort](algorithms/sort/heap_sort.py)
@@ -229,6 +233,7 @@ Um das Projekt zu deinstallieren tippen Sie folgendes:
     - [merge_sort](algorithms/sort/merge_sort.py)
     - [quick_sort](algorithms/sort/quick_sort.py)
     - [selection_sort](algorithms/sort/selection_sort.py)
+    - [shell_sort](algorithms/sort/shell_sort.py)
     - [sort_colors](algorithms/sort/sort_colors.py)
     - [topsort](algorithms/sort/topsort.py)
     - [wiggle_sort](algorithms/sort/wiggle_sort.py)
diff --git a/README_JP.md b/README_JP.md
index 352d728..d2e30aa 100644
--- a/README_JP.md
+++ b/README_JP.md
@@ -49,260 +49,265 @@ if __name__ == "__main__":
 
 ## アルゴリズムのリスト
 
-- [arrays : 配列](arrays)
-    - [delete_nth](arrays/delete_nth.py)
-    - [flatten](arrays/flatten.py)
-    - [garage](arrays/garage.py)
-    - [josephus_problem](arrays/josephus_problem.py)
-    - [longest_non_repeat](arrays/longest_non_repeat.py/)
-    - [merge_intervals](arrays/merge_intervals.py)
-    - [missing_ranges](arrays/missing_ranges.py)
-    - [plus_one](arrays/plus_one.py)
-    - [rotate_array](arrays/rotate_array.py)
-    - [summary_ranges](arrays/summary_ranges.py)
-    - [three_sum](arrays/three_sum.py)
-    - [two_sum](arrays/two_sum.py)
-    - [move_zeros_to_end](arrays/move_zeros_to_end.py)
-- [backtrack : バックトラッキング](backtrack)
-    - [general_solution.md](backtrack/)
-    - [anagram](backtrack/anagram.py)
-    - [array_sum_combinations](backtrack/array_sum_combinations.py)
-    - [combination_sum](backtrack/combination_sum.py)
-    - [expression_add_operators](backtrack/expression_add_operators.py)
-    - [factor_combinations](backtrack/factor_combinations.py)
-    - [generate_abbreviations](backtrack/generate_abbreviations.py)
-    - [generate_parenthesis](backtrack/generate_parenthesis.py)
-    - [letter_combination](backtrack/letter_combination.py)
-    - [palindrome_partitioning](backtrack/palindrome_partitioning.py)
-    - [pattern_match](backtrack/pattern_match.py)
-    - [permute](backtrack/permute.py)
-    - [permute_unique](backtrack/permute_unique.py)
-    - [subsets](backtrack/subsets.py)
-    - [subsets_unique](backtrack/subsets_unique.py)
-- [bfs : 幅優先探索](bfs)
-    - [shortest_distance_from_all_buildings](bfs/shortest_distance_from_all_buildings.py)
-    - [word_ladder](bfs/word_ladder.py)
-- [bit : ビット](bit)
-    - [bytes_int_conversion](bit/bytes_int_conversion.py)
-    - [count_ones](bit/count_ones.py)
-    - [find_missing_number](bit/find_missing_number.py)
-    - [power_of_two](bit/power_of_two.py)
-    - [reverse_bits](bit/reverse_bits.py)
-    - [single_number](bit/single_number.py)
-    - [single_number2](bit/single_number2.py)
-    - [single_number3](bit/single_number3.py)
-    - [subsets](bit/subsets.py)
-    - [add_bitwise_operator](bit/add_bitwise_operator.py)
-    - [bit_operation](bit/bit_operation.py)
-    - [swap_pair](bit/swap_pair.py)
-    - [find_difference](bit/find_difference.py)
-    - [has_alternative_bit](bit/has_alternative_bit.py)
-    - [insert_bit](bit/insert_bit.py)
-    - [remove_bit](bit/remove_bit.py)
-- [calculator : 計算機](calculator)
-    - [math_parser](calculator/math_parser.py)
-- [dfs : 深さ優先探索](dfs)
-    - [all_factors](dfs/all_factors.py)
-    - [count_islands](dfs/count_islands.py)
-    - [pacific_atlantic](dfs/pacific_atlantic.py)
-    - [sudoku_solver](dfs/sudoku_solver.py)
-    - [walls_and_gates](dfs/walls_and_gates.py)
-- [dp : 動的計画法](dp)
-    - [buy_sell_stock](dp/buy_sell_stock.py)
-    - [climbing_stairs](dp/climbing_stairs.py)
-    - [coin_change](dp/coin_change.py)
-    - [combination_sum](dp/combination_sum.py)
-    - [egg_drop](dp/egg_drop.py)
-    - [house_robber](dp/house_robber.py)
-    - [job_scheduling](dp/job_scheduling.py)
-    - [knapsack](dp/knapsack.py)
-    - [longest_increasing](dp/longest_increasing.py)
-    - [matrix_chain_order](dp/matrix_chain_order.py)
-    - [max_product_subarray](dp/max_product_subarray.py)
-    - [max_subarray](dp/max_subarray.py)
-    - [min_cost_path](dp/min_cost_path.py)
-    - [num_decodings](dp/num_decodings.py)
-    - [regex_matching](dp/regex_matching.py)
-    - [rod_cut](dp/rod_cut.py)
-    - [word_break](dp/word_break.py)
-    - [fibonacci](dp/fib.py)
-- [graph : グラフ](graph)
-    - [strongly_connected](graph/checkDiGraphStronglyConnected.py)
-    - [clone_graph](graph/clone_graph.py)
-    - [cycle_detection](graph/cycle_detection.py)
-    - [find_all_cliques](graph/find_all_cliques.py)
-    - [find_path](graph/find_path.py)
-    - [graph](graph/graph.py)
-    - [markov_chain](graph/markov_chain.py)
-    - [minimum_spanning_tree](graph/minimum_spanning_tree.py)
-    - [satisfiability](graph/satisfiability.py)
-    - [tarjan](graph/tarjan.py)
-    - [traversal](graph/traversal.py)
-- [heap : ヒープ](heap)
-    - [merge_sorted_k_lists](heap/merge_sorted_k_lists.py)
-    - [skyline](heap/skyline.py)
-    - [sliding_window_max](heap/sliding_window_max.py)
-    - [binary_heap](heap/binary_heap.py)
-- [linkedlist : 連結リスト](linkedlist)
-    - [add_two_numbers](linkedlist/add_two_numbers.py)
-    - [copy_random_pointer](linkedlist/copy_random_pointer.py)
-    - [delete_node](linkedlist/delete_node.py)
-    - [first_cyclic_node](linkedlist/first_cyclic_node.py)
-    - [is_cyclic](linkedlist/is_cyclic.py)
-    - [is_palindrome](linkedlist/is_palindrome.py)
-    - [kth_to_last](linkedlist/kth_to_last.py)
-    - [linkedlist](linkedlist/linkedlist.py)
-    - [remove_duplicates](linkedlist/remove_duplicates.py)
-    - [reverse](linkedlist/reverse.py)
-    - [rotate_list](linkedlist/rotate_list.py)
-    - [swap_in_pairs](linkedlist/swap_in_pairs.py)
-    - [is_sorted](linkedlist/is_sorted.py)
-    - [remove_range](linkedlist/remove_range.py)
-- [map : マップ](map)
-    - [hashtable](map/hashtable.py)
-    - [separate_chaining_hashtable](map/separate_chaining_hashtable.py)
-    - [longest_common_subsequence](map/longest_common_subsequence.py)
-    - [randomized_set](map/randomized_set.py)
-    - [valid_sudoku](map/valid_sudoku.py)
-- [maths : 数学](maths)
-    - [base_conversion](maths/base_conversion.py)
-    - [extended_gcd](maths/extended_gcd.py)
-    - [gcd/lcm](maths/gcd.py)
-    - [generate_strobogrammtic](maths/generate_strobogrammtic.py)
-    - [is_strobogrammatic](maths/is_strobogrammatic.py)
-    - [next_bigger](maths/next_bigger.py)
-    - [next_perfect_square](maths/next_perfect_square.py)
-    - [nth_digit](maths/nth_digit.py)
-    - [prime_check](maths/prime_check.py)
-    - [primes_sieve_of_eratosthenes](maths/primes_sieve_of_eratosthenes.py)
-    - [pythagoras](maths/pythagoras.py)
-    - [rabin_miller](maths/rabin_miller.py)
-    - [rsa](maths/rsa.py)
-    - [sqrt_precision_factor](maths/sqrt_precision_factor.py)
-    - [summing_digits](maths/summing_digits.py)
-- [matrix : 行列](matrix)
-    - [sudoku_validator](matrix/sudoku_validator.py)
-    - [bomb_enemy](matrix/bomb_enemy.py)
-    - [copy_transform](matrix/copy_transform.py)
-    - [count_paths](matrix/count_paths.py)
-    - [matrix_rotation.txt](matrix/matrix_rotation.txt)
-    - [rotate_image](matrix/rotate_image.py)
-    - [search_in_sorted_matrix](matrix/search_in_sorted_matrix.py)
-    - [sparse_dot_vector](matrix/sparse_dot_vector.py)
-    - [sparse_mul](matrix/sparse_mul.py)
-    - [spiral_traversal](matrix/spiral_traversal.py)
-- [queues : キュー](queues)
-    - [max_sliding_window](queues/max_sliding_window.py)
-    - [moving_average](queues/moving_average.py)
-    - [queue](queues/queue.py)
-    - [reconstruct_queue](queues/reconstruct_queue.py)
-    - [zigzagiterator](queues/zigzagiterator.py)
-- [search : サーチ](search)
-    - [binary_search](search/binary_search.py)
-    - [first_occurance](search/first_occurance.py)
-    - [last_occurance](search/last_occurance.py)
-    - [search_insert](search/search_insert.py)
-    - [two_sum](search/two_sum.py)
-    - [search_range](search/search_range.py)
-    - [find_min_rotate](search/find_min_rotate.py)
-    - [search_rotate](search/search_rotate.py)
-- [set : セット](set)
-    - [randomized_set](set/randomized_set.py)
-    - [set_covering](set/set_covering.py)
-- [sort : ソート](sort)
-    - [bubble_sort](sort/bubble_sort.py)
-    - [comb_sort](sort/comb_sort.py)
-    - [counting_sort](sort/counting_sort.py)
-    - [heap_sort](sort/heap_sort.py)
-    - [insertion_sort](sort/insertion_sort.py)
-    - [meeting_rooms](sort/meeting_rooms.py)
-    - [merge_sort](sort/merge_sort.py)
-    - [quick_sort](sort/quick_sort.py)
-    - [selection_sort](sort/selection_sort.py)
-    - [sort_colors](sort/sort_colors.py)
-    - [topsort](sort/topsort.py)
-    - [wiggle_sort](sort/wiggle_sort.py)
-- [stack : スタック](stack)
-    - [longest_abs_path](stack/longest_abs_path.py)
-    - [simplify_path](stack/simplify_path.py)
-    - [stack](stack/stack.py)
-    - [valid_parenthesis](stack/valid_parenthesis.py)
-    - [stutter](stack/stutter.py)
-    - [switch_pairs](stack/switch_pairs.py)
-    - [is_consecutive](stack/is_consecutive.py)
-    - [remove_min](stack/remove_min.py)
-    - [is_sorted](stack/is_sorted.py)
-- [strings : 文字列](strings)
-    - [fizzbuzz](strings/fizzbuzz.py)
-    - [delete_reoccurring_characters](strings/delete_reoccurring_characters.py)
-    - [strip_url_params](strings/strip_url_params.py)
-    - [validate_coordinates](strings/validate_coordinates.py)
-    - [domain_extractor](strings/domain_extractor.py)
-    - [merge_string_checker](strings/merge_string_checker.py)
-    - [add_binary](strings/add_binary.py)
-    - [breaking_bad](strings/breaking_bad.py)
-    - [decode_string](strings/decode_string.py)
-    - [encode_decode](strings/encode_decode.py)
-    - [group_anagrams](strings/group_anagrams.py)
-    - [int_to_roman](strings/int_to_roman.py)
-    - [is_palindrome](strings/is_palindrome.py)
-    - [license_number](strings/license_number.py)
-    - [make_sentence](strings/make_sentence.py)
-    - [multiply_strings](strings/multiply_strings.py)
-    - [one_edit_distance](strings/one_edit_distance.py)
-    - [rabin_karp](strings/rabin_karp.py)
-    - [reverse_string](strings/reverse_string.py)
-    - [reverse_vowel](strings/reverse_vowel.py)
-    - [reverse_words](strings/reverse_words.py)
-    - [roman_to_int](strings/roman_to_int.py)
-    - [word_squares](strings/word_squares.py)
-- [tree : 木構造](tree)
-    - [bst](tree/tree/bst)
-        - [array2bst](tree/bst/array2bst.py)
-        - [bst_closest_value](tree/bst/bst_closest_value.py)
-        - [BSTIterator](tree/bst/BSTIterator.py)
-        - [delete_node](tree/bst/delete_node.py)
-        - [is_bst](tree/bst/is_bst.py)
-        - [kth_smallest](tree/bst/kth_smallest.py)
-        - [lowest_common_ancestor](tree/bst/lowest_common_ancestor.py)
-        - [predecessor](tree/bst/predecessor.py)
-        - [serialize_deserialize](tree/bst/serialize_deserialize.py)
-        - [successor](tree/bst/successor.py)
-        - [unique_bst](tree/bst/unique_bst.py)
-        - [depth_sum](tree/bst/depth_sum.py)
-        - [count_left_node](tree/bst/count_left_node.py)
-        - [num_empty](tree/bst/num_empty.py)
-        - [height](tree/bst/height.py)
-    - [red_black_tree](tree/red_black_tree)
-        - [red_black_tree](tree/red_black_tree/red_black_tree.py)
-    - [segment_tree](tree/segment_tree)
-        - [segment_tree](tree/segment_tree/segment_tree.py)
-    - [traversal](tree/traversal)
-        - [inorder](tree/traversal/inorder.py)
-        - [level_order](tree/traversal/level_order.py)
-        - [zigzag](tree/traversal/zigzag.py)
-    - [trie](tree/trie)
-        - [add_and_search](tree/trie/add_and_search.py)
-        - [trie](tree/trie/trie.py)
-    - [binary_tree_paths](tree/binary_tree_paths.py)
-    - [bintree2list](tree/bintree2list.py)
-    - [deepest_left](tree/deepest_left.py)
-    - [invert_tree](tree/invert_tree.py)
-    - [is_balanced](tree/is_balanced.py)
-    - [is_subtree](tree/is_subtree.py)
-    - [is_symmetric](tree/is_symmetric.py)
-    - [longest_consecutive](tree/longest_consecutive.py)
-    - [lowest_common_ancestor](tree/lowest_common_ancestor.py)
-    - [max_height](tree/max_height.py)
-    - [max_path_sum](tree/max_path_sum.py)
-    - [min_height](tree/min_height.py)
-    - [path_sum](tree/path_sum.py)
-    - [path_sum2](tree/path_sum2.py)
-    - [pretty_print](tree/pretty_print.py)
-    - [same_tree](tree/same_tree.py)
-    - [tree](tree/tree.py)
-- [union-find : 素集合データ構造](union-find)
-    - [count_islands](union-find/count_islands.py)
+- [arrays : 配列](algorithms/arrays)
+    - [delete_nth](algorithms/arrays/delete_nth.py)
+    - [flatten](algorithms/arrays/flatten.py)
+    - [garage](algorithms/arrays/garage.py)
+    - [josephus_problem](algorithms/arrays/josephus.py)
+    - [max_ones_index](algorithms/arrays/max_ones_index.py)
+    - [longest_non_repeat](algorithms/arrays/longest_non_repeat.py/)
+    - [merge_intervals](algorithms/arrays/merge_intervals.py)
+    - [missing_ranges](algorithms/arrays/missing_ranges.py)
+    - [plus_one](algorithms/arrays/plus_one.py)
+    - [rotate_array](algorithms/arrays/rotate_array.py)
+    - [summary_ranges](algorithms/arrays/summary_ranges.py)
+    - [three_sum](algorithms/arrays/three_sum.py)
+    - [two_sum](algorithms/arrays/two_sum.py)
+    - [move_zeros_to_end](algorithms/arrays/move_zeros_to_end.py)
+- [backtrack : バックトラッキング](algorithms/backtrack)
+    - [general_solution.md](algorithms/backtrack/)
+    - [anagram](algorithms/backtrack/anagram.py)
+    - [array_sum_combinations](algorithms/backtrack/array_sum_combinations.py)
+    - [combination_sum](algorithms/backtrack/combination_sum.py)
+    - [expression_add_operators](algorithms/backtrack/expression_add_operators.py)
+    - [factor_combinations](algorithms/backtrack/factor_combinations.py)
+    - [generate_abbreviations](algorithms/backtrack/generate_abbreviations.py)
+    - [generate_parenthesis](algorithms/backtrack/generate_parenthesis.py)
+    - [letter_combination](algorithms/backtrack/letter_combination.py)
+    - [palindrome_partitioning](algorithms/backtrack/palindrome_partitioning.py)
+    - [pattern_match](algorithms/backtrack/pattern_match.py)
+    - [permute](algorithms/backtrack/permute.py)
+    - [permute_unique](algorithms/backtrack/permute_unique.py)
+    - [subsets](algorithms/backtrack/subsets.py)
+    - [subsets_unique](algorithms/backtrack/subsets_unique.py)
+- [bfs : 幅優先探索](algorithms/bfs)
+    - [shortest_distance_from_all_buildings](algorithms/bfs/shortest_distance_from_all_buildings.py)
+    - [word_ladder](algorithms/bfs/word_ladder.py)
+- [bit : ビット](algorithms/bit)
+    - [bytes_int_conversion](algorithms/bit/bytes_int_conversion.py)
+    - [count_ones](algorithms/bit/count_ones.py)
+    - [count_flips_to_convert](algorithms/bit/count_flips_to_convert.py)
+    - [find_missing_number](algorithms/bit/find_missing_number.py)
+    - [flip_bit_longest_sequence](algorithms/bit/flip_bit_longest_sequence.py)
+    - [power_of_two](algorithms/bit/power_of_two.py)
+    - [reverse_bits](algorithms/bit/reverse_bits.py)
+    - [single_number](algorithms/bit/single_number.py)
+    - [single_number2](algorithms/bit/single_number2.py)
+    - [single_number3](algorithms/bit/single_number3.py)
+    - [subsets](algorithms/bit/subsets.py)
+    - [add_bitwise_operator](algorithms/bit/add_bitwise_operator.py)
+    - [bit_operation](algorithms/bit/bit_operation.py)
+    - [swap_pair](algorithms/bit/swap_pair.py)
+    - [find_difference](algorithms/bit/find_difference.py)
+    - [has_alternative_bit](algorithms/bit/has_alternative_bit.py)
+    - [insert_bit](algorithms/bit/insert_bit.py)
+    - [remove_bit](algorithms/bit/remove_bit.py)
+- [calculator : 計算機](algorithms/calculator)
+    - [math_parser](algorithms/calculator/math_parser.py)
+- [dfs : 深さ優先探索](algorithms/dfs)
+    - [all_factors](algorithms/dfs/all_factors.py)
+    - [count_islands](algorithms/dfs/count_islands.py)
+    - [pacific_atlantic](algorithms/dfs/pacific_atlantic.py)
+    - [sudoku_solver](algorithms/dfs/sudoku_solver.py)
+    - [walls_and_gates](algorithms/dfs/walls_and_gates.py)
+- [dp : 動的計画法](algorithms/dp)
+    - [buy_sell_stock](algorithms/dp/buy_sell_stock.py)
+    - [climbing_stairs](algorithms/dp/climbing_stairs.py)
+    - [coin_change](algorithms/dp/coin_change.py)
+    - [combination_sum](algorithms/dp/combination_sum.py)
+    - [egg_drop](algorithms/dp/egg_drop.py)
+    - [house_robber](algorithms/dp/house_robber.py)
+    - [job_scheduling](algorithms/dp/job_scheduling.py)
+    - [knapsack](algorithms/dp/knapsack.py)
+    - [longest_increasing](algorithms/dp/longest_increasing.py)
+    - [matrix_chain_order](algorithms/dp/matrix_chain_order.py)
+    - [max_product_subarray](algorithms/dp/max_product_subarray.py)
+    - [max_subarray](algorithms/dp/max_subarray.py)
+    - [min_cost_path](algorithms/dp/min_cost_path.py)
+    - [num_decodings](algorithms/dp/num_decodings.py)
+    - [regex_matching](algorithms/dp/regex_matching.py)
+    - [rod_cut](algorithms/dp/rod_cut.py)
+    - [word_break](algorithms/dp/word_break.py)
+    - [fibonacci](algorithms/dp/fib.py)
+- [graph : グラフ](algorithms/graph)
+    - [strongly_connected](algorithms/graph/checkDiGraphStronglyConnected.py)
+    - [clone_graph](algorithms/graph/clone_graph.py)
+    - [cycle_detection](algorithms/graph/cycle_detection.py)
+    - [find_all_cliques](algorithms/graph/find_all_cliques.py)
+    - [find_path](algorithms/graph/find_path.py)
+    - [graph](algorithms/graph/graph.py)
+    - [markov_chain](algorithms/graph/markov_chain.py)
+    - [minimum_spanning_tree](algorithms/graph/minimum_spanning_tree.py)
+    - [satisfiability](algorithms/graph/satisfiability.py)
+    - [tarjan](algorithms/graph/tarjan.py)
+    - [traversal](algorithms/graph/traversal.py)
+- [heap : ヒープ](algorithms/heap)
+    - [merge_sorted_k_lists](algorithms/heap/merge_sorted_k_lists.py)
+    - [skyline](algorithms/heap/skyline.py)
+    - [sliding_window_max](algorithms/heap/sliding_window_max.py)
+    - [binary_heap](algorithms/heap/binary_heap.py)
+- [linkedlist : 連結リスト](algorithms/linkedlist)
+    - [add_two_numbers](algorithms/linkedlist/add_two_numbers.py)
+    - [copy_random_pointer](algorithms/linkedlist/copy_random_pointer.py)
+    - [delete_node](algorithms/linkedlist/delete_node.py)
+    - [first_cyclic_node](algorithms/linkedlist/first_cyclic_node.py)
+    - [is_cyclic](algorithms/linkedlist/is_cyclic.py)
+    - [is_palindrome](algorithms/linkedlist/is_palindrome.py)
+    - [kth_to_last](algorithms/linkedlist/kth_to_last.py)
+    - [linkedlist](algorithms/linkedlist/linkedlist.py)
+    - [remove_duplicates](algorithms/linkedlist/remove_duplicates.py)
+    - [reverse](algorithms/linkedlist/reverse.py)
+    - [rotate_list](algorithms/linkedlist/rotate_list.py)
+    - [swap_in_pairs](algorithms/linkedlist/swap_in_pairs.py)
+    - [is_sorted](algorithms/linkedlist/is_sorted.py)
+    - [remove_range](algorithms/linkedlist/remove_range.py)
+- [map : マップ](algorithms/map)
+    - [hashtable](algorithms/map/hashtable.py)
+    - [separate_chaining_hashtable](algorithms/map/separate_chaining_hashtable.py)
+    - [longest_common_subsequence](algorithms/map/longest_common_subsequence.py)
+    - [randomized_set](algorithms/map/randomized_set.py)
+    - [valid_sudoku](algorithms/map/valid_sudoku.py)
+- [maths : 数学](algorithms/maths)
+    - [base_conversion](algorithms/maths/base_conversion.py)
+    - [extended_gcd](algorithms/maths/extended_gcd.py)
+    - [gcd/lcm](algorithms/maths/gcd.py)
+    - [generate_strobogrammtic](algorithms/maths/generate_strobogrammtic.py)
+    - [is_strobogrammatic](algorithms/maths/is_strobogrammatic.py)
+    - [next_bigger](algorithms/maths/next_bigger.py)
+    - [next_perfect_square](algorithms/maths/next_perfect_square.py)
+    - [nth_digit](algorithms/maths/nth_digit.py)
+    - [prime_check](algorithms/maths/prime_check.py)
+    - [primes_sieve_of_eratosthenes](algorithms/maths/primes_sieve_of_eratosthenes.py)
+    - [pythagoras](algorithms/maths/pythagoras.py)
+    - [rabin_miller](algorithms/maths/rabin_miller.py)
+    - [rsa](algorithms/maths/rsa.py)
+    - [sqrt_precision_factor](algorithms/maths/sqrt_precision_factor.py)
+    - [summing_digits](algorithms/maths/summing_digits.py)
+- [matrix : 行列](algorithms/matrix)
+    - [sudoku_validator](algorithms/matrix/sudoku_validator.py)
+    - [bomb_enemy](algorithms/matrix/bomb_enemy.py)
+    - [copy_transform](algorithms/matrix/copy_transform.py)
+    - [count_paths](algorithms/matrix/count_paths.py)
+    - [matrix_rotation.txt](algorithms/matrix/matrix_rotation.txt)
+    - [rotate_image](algorithms/matrix/rotate_image.py)
+    - [search_in_sorted_matrix](algorithms/matrix/search_in_sorted_matrix.py)
+    - [sparse_dot_vector](algorithms/matrix/sparse_dot_vector.py)
+    - [sparse_mul](algorithms/matrix/sparse_mul.py)
+    - [spiral_traversal](algorithms/matrix/spiral_traversal.py)
+- [queues : キュー](algorithms/queues)
+    - [max_sliding_window](algorithms/queues/max_sliding_window.py)
+    - [moving_average](algorithms/queues/moving_average.py)
+    - [queue](algorithms/queues/queue.py)
+    - [reconstruct_queue](algorithms/queues/reconstruct_queue.py)
+    - [zigzagiterator](algorithms/queues/zigzagiterator.py)
+- [search : サーチ](algorithms/search)
+    - [binary_search](algorithms/search/binary_search.py)
+    - [first_occurance](algorithms/search/first_occurance.py)
+    - [last_occurance](algorithms/search/last_occurance.py)
+    - [search_insert](algorithms/search/search_insert.py)
+    - [two_sum](algorithms/search/two_sum.py)
+    - [search_range](algorithms/search/search_range.py)
+    - [find_min_rotate](algorithms/search/find_min_rotate.py)
+    - [search_rotate](algorithms/search/search_rotate.py)
+- [set : セット](algorithms/set)
+    - [randomized_set](algorithms/set/randomized_set.py)
+    - [set_covering](algorithms/set/set_covering.py)
+- [sort : ソート](algorithms/sort)
+    - [bubble_sort](algorithms/sort/bubble_sort.py)
+    - [bucket_sort](algorithms/sort/bucket_sort.py)
+    - [comb_sort](algorithms/sort/comb_sort.py)
+    - [counting_sort](algorithms/sort/counting_sort.py)
+    - [heap_sort](algorithms/sort/heap_sort.py)
+    - [insertion_sort](algorithms/sort/insertion_sort.py)
+    - [meeting_rooms](algorithms/sort/meeting_rooms.py)
+    - [merge_sort](algorithms/sort/merge_sort.py)
+    - [quick_sort](algorithms/sort/quick_sort.py)
+    - [selection_sort](algorithms/sort/selection_sort.py)
+    - [shell_sort](algorithms/sort/shell_sort.py)
+    - [sort_colors](algorithms/sort/sort_colors.py)
+    - [topsort](algorithms/sort/topsort.py)
+    - [wiggle_sort](algorithms/sort/wiggle_sort.py)
+- [stack : スタック](algorithms/stack)
+    - [longest_abs_path](algorithms/stack/longest_abs_path.py)
+    - [simplify_path](algorithms/stack/simplify_path.py)
+    - [stack](algorithms/stack/stack.py)
+    - [valid_parenthesis](algorithms/stack/valid_parenthesis.py)
+    - [stutter](algorithms/stack/stutter.py)
+    - [switch_pairs](algorithms/stack/switch_pairs.py)
+    - [is_consecutive](algorithms/stack/is_consecutive.py)
+    - [remove_min](algorithms/stack/remove_min.py)
+    - [is_sorted](algorithms/stack/is_sorted.py)
+- [strings : 文字列](algorithms/strings)
+    - [fizzbuzz](algorithms/strings/fizzbuzz.py)
+    - [delete_reoccurring_characters](algorithms/strings/delete_reoccurring_characters.py)
+    - [strip_url_params](algorithms/strings/strip_url_params.py)
+    - [validate_coordinates](algorithms/strings/validate_coordinates.py)
+    - [domain_extractor](algorithms/strings/domain_extractor.py)
+    - [merge_string_checker](algorithms/strings/merge_string_checker.py)
+    - [add_binary](algorithms/strings/add_binary.py)
+    - [breaking_bad](algorithms/strings/breaking_bad.py)
+    - [decode_string](algorithms/strings/decode_string.py)
+    - [encode_decode](algorithms/strings/encode_decode.py)
+    - [group_anagrams](algorithms/strings/group_anagrams.py)
+    - [int_to_roman](algorithms/strings/int_to_roman.py)
+    - [is_palindrome](algorithms/strings/is_palindrome.py)
+    - [license_number](algorithms/strings/license_number.py)
+    - [make_sentence](algorithms/strings/make_sentence.py)
+    - [multiply_strings](algorithms/strings/multiply_strings.py)
+    - [one_edit_distance](algorithms/strings/one_edit_distance.py)
+    - [rabin_karp](algorithms/strings/rabin_karp.py)
+    - [reverse_string](algorithms/strings/reverse_string.py)
+    - [reverse_vowel](algorithms/strings/reverse_vowel.py)
+    - [reverse_words](algorithms/strings/reverse_words.py)
+    - [roman_to_int](algorithms/strings/roman_to_int.py)
+    - [word_squares](algorithms/strings/word_squares.py)
+- [tree : 木構造](algorithms/tree)
+    - [bst](algorithms/tree/tree/bst)
+        - [array2bst](algorithms/tree/bst/array2bst.py)
+        - [bst_closest_value](algorithms/tree/bst/bst_closest_value.py)
+        - [BSTIterator](algorithms/tree/bst/BSTIterator.py)
+        - [delete_node](algorithms/tree/bst/delete_node.py)
+        - [is_bst](algorithms/tree/bst/is_bst.py)
+        - [kth_smallest](algorithms/tree/bst/kth_smallest.py)
+        - [lowest_common_ancestor](algorithms/tree/bst/lowest_common_ancestor.py)
+        - [predecessor](algorithms/tree/bst/predecessor.py)
+        - [serialize_deserialize](algorithms/tree/bst/serialize_deserialize.py)
+        - [successor](algorithms/tree/bst/successor.py)
+        - [unique_bst](algorithms/tree/bst/unique_bst.py)
+        - [depth_sum](algorithms/tree/bst/depth_sum.py)
+        - [count_left_node](algorithms/tree/bst/count_left_node.py)
+        - [num_empty](algorithms/tree/bst/num_empty.py)
+        - [height](algorithms/tree/bst/height.py)
+    - [red_black_tree](algorithms/tree/red_black_tree)
+        - [red_black_tree](algorithms/tree/red_black_tree/red_black_tree.py)
+    - [segment_tree](algorithms/tree/segment_tree)
+        - [segment_tree](algorithms/tree/segment_tree/segment_tree.py)
+    - [traversal](algorithms/tree/traversal)
+        - [inorder](algorithms/tree/traversal/inorder.py)
+        - [level_order](algorithms/tree/traversal/level_order.py)
+        - [zigzag](algorithms/tree/traversal/zigzag.py)
+    - [trie](algorithms/tree/trie)
+        - [add_and_search](algorithms/tree/trie/add_and_search.py)
+        - [trie](algorithms/tree/trie/trie.py)
+    - [binary_tree_paths](algorithms/tree/binary_tree_paths.py)
+    - [bintree2list](algorithms/tree/bintree2list.py)
+    - [deepest_left](algorithms/tree/deepest_left.py)
+    - [invert_tree](algorithms/tree/invert_tree.py)
+    - [is_balanced](algorithms/tree/is_balanced.py)
+    - [is_subtree](algorithms/tree/is_subtree.py)
+    - [is_symmetric](algorithms/tree/is_symmetric.py)
+    - [longest_consecutive](algorithms/tree/longest_consecutive.py)
+    - [lowest_common_ancestor](algorithms/tree/lowest_common_ancestor.py)
+    - [max_height](algorithms/tree/max_height.py)
+    - [max_path_sum](algorithms/tree/max_path_sum.py)
+    - [min_height](algorithms/tree/min_height.py)
+    - [path_sum](algorithms/tree/path_sum.py)
+    - [path_sum2](algorithms/tree/path_sum2.py)
+    - [pretty_print](algorithms/tree/pretty_print.py)
+    - [same_tree](algorithms/tree/same_tree.py)
+    - [tree](algorithms/tree/tree.py)
+- [union-find : 素集合データ構造](algorithms/union-find)
+    - [count_islands](algorithms/union-find/count_islands.py)
 
 ## 貢献者
 本リポジトリは次の方によって維持されています
diff --git a/README_KR.md b/README_KR.md
new file mode 100644
index 0000000..a2b408a
--- /dev/null
+++ b/README_KR.md
@@ -0,0 +1,317 @@
+English(README_EN.md) | [简体中文](README_CN.md) | [Deutsch](README_GE.md) | 한국어 | [日本語](README_JP.md)
+
+Python 버전 자료구조 및 알고리즘
+=========================================
+
+Python 3로 구현한 간단하고 명확한 자료구조와 알고리즘들의 예제 입니다.
+
+## 기여 활동
+프로젝트 활동 참여에 관심을 가져주셔서 감사합니다! 여러가지 방법으로 이 프로젝트에 기여해주세요. [기여 방법 소개](CONTRIBUTING.md)
+
+
+## 테스트 종류들
+
+### 단위별 테스트 사용
+아래 명시된 모든 테스트 실행하기:
+
+    $ python3 -m unittest discover tests
+
+특정 테스트 실행하기 위해선 아래 코드로 실행할 수 있습니다 (예시: sort):
+
+    $ python3 -m unittest tests.test_sort
+
+### pytest 사용
+아래 명시된 모든 테스트 실행하기:
+
+    $ python3 -m pytest tests
+
+## 알고리즘 설치
+만약 API 알고리즘들을 당신의 코드에 사용하기를 원한다면, 아래 코드로 간단하게 실행할 수 있습니다:
+
+    $ pip3 install git+https://github.com/keon/algorithms
+
+그리고 python 파일을 만듦으로 테스트할 수 있습니다: (예시: 'sort'안에서 'merge_sort'사용)
+
+```python3
+from sort import merge_sort
+
+if __name__ == "__main__":
+    my_list = [1, 8, 3, 5, 6]
+    my_list = merge_sort.merge_sort(my_list)
+    print(my_list)
+```
+
+## 알고리즘 삭제
+만약 당신이 알고리즘들을 삭제하기 원한다면, 아래 코드로 간단하게 실행할 수 있습니다:
+
+    $ pip3 uninstall -y algorithms
+
+## 구현 알고리즘 목록
+
+- [arrays : 배열](algorithms/arrays)
+    - [delete_nth](algorithms/arrays/delete_nth.py)
+    - [flatten](algorithms/arrays/flatten.py)
+    - [garage](algorithms/arrays/garage.py)
+    - [josephus_problem](algorithms/arrays/josephus_problem.py)
+    - [longest_non_repeat](algorithms/arrays/longest_non_repeat.py/)
+    - [merge_intervals](algorithms/arrays/merge_intervals.py)
+    - [missing_ranges](algorithms/arrays/missing_ranges.py)
+    - [plus_one](algorithms/arrays/plus_one.py)
+    - [rotate_array](algorithms/arrays/rotate_array.py)
+    - [summary_ranges](algorithms/arrays/summary_ranges.py)
+    - [three_sum](algorithms/arrays/three_sum.py)
+    - [two_sum](algorithms/arrays/two_sum.py)
+    - [move_zeros_to_end](algorithms/arrays/move_zeros_to_end.py)
+- [backtrack : 백트래킹](algorithms/backtrack)
+    - [general_solution.md](algorithms/backtrack/)
+    - [anagram](algorithms/backtrack/anagram.py)
+    - [array_sum_combinations](algorithms/backtrack/array_sum_combinations.py)
+    - [combination_sum](algorithms/backtrack/combination_sum.py)
+    - [expression_add_operators](algorithms/backtrack/expression_add_operators.py)
+    - [factor_combinations](algorithms/backtrack/factor_combinations.py)
+    - [generate_abbreviations](algorithms/backtrack/generate_abbreviations.py)
+    - [generate_parenthesis](algorithms/backtrack/generate_parenthesis.py)
+    - [letter_combination](algorithms/backtrack/letter_combination.py)
+    - [palindrome_partitioning](algorithms/backtrack/palindrome_partitioning.py)
+    - [pattern_match](algorithms/backtrack/pattern_match.py)
+    - [permute](algorithms/backtrack/permute.py)
+    - [permute_unique](algorithms/backtrack/permute_unique.py)
+    - [subsets](algorithms/backtrack/subsets.py)
+    - [subsets_unique](algorithms/backtrack/subsets_unique.py)
+- [bfs : 너비 우선 탐색](algorithms/bfs)
+    - [shortest_distance_from_all_buildings](algorithms/bfs/shortest_distance_from_all_buildings.py)
+    - [word_ladder](algorithms/bfs/word_ladder.py)
+- [bit : 비트](algorithms/bit)
+    - [bytes_int_conversion](algorithms/bit/bytes_int_conversion.py)
+    - [count_ones](algorithms/bit/count_ones.py)
+    - [find_missing_number](algorithms/bit/find_missing_number.py)
+    - [power_of_two](algorithms/bit/power_of_two.py)
+    - [reverse_bits](algorithms/bit/reverse_bits.py)
+    - [single_number](algorithms/bit/single_number.py)
+    - [single_number2](algorithms/bit/single_number2.py)
+    - [single_number3](algorithms/bit/single_number3.py)
+    - [subsets](algorithms/bit/subsets.py)
+    - [add_bitwise_operator](algorithms/bit/add_bitwise_operator.py)
+    - [bit_operation](algorithms/bit/bit_operation.py)
+    - [swap_pair](algorithms/bit/swap_pair.py)
+    - [find_difference](algorithms/bit/find_difference.py)
+    - [has_alternative_bit](algorithms/bit/has_alternative_bit.py)
+    - [insert_bit](algorithms/bit/insert_bit.py)
+    - [remove_bit](algorithms/bit/remove_bit.py)
+- [calculator : 계산기](algorithms/calculator)
+    - [math_parser](algorithms/calculator/math_parser.py)
+- [dfs : 깊이 우선 탐색](algorithms/dfs)
+    - [all_factors](algorithms/dfs/all_factors.py)
+    - [count_islands](algorithms/dfs/count_islands.py)
+    - [pacific_atlantic](algorithms/dfs/pacific_atlantic.py)
+    - [sudoku_solver](algorithms/dfs/sudoku_solver.py)
+    - [walls_and_gates](algorithms/dfs/walls_and_gates.py)
+- [dp : 동적 계획법](algorithms/dp)
+    - [buy_sell_stock](algorithms/dp/buy_sell_stock.py)
+    - [climbing_stairs](algorithms/dp/climbing_stairs.py)
+    - [coin_change](algorithms/dp/coin_change.py)
+    - [combination_sum](algorithms/dp/combination_sum.py)
+    - [egg_drop](algorithms/dp/egg_drop.py)
+    - [house_robber](algorithms/dp/house_robber.py)
+    - [job_scheduling](algorithms/dp/job_scheduling.py)
+    - [knapsack](algorithms/dp/knapsack.py)
+    - [longest_increasing](algorithms/dp/longest_increasing.py)
+    - [matrix_chain_order](algorithms/dp/matrix_chain_order.py)
+    - [max_product_subarray](algorithms/dp/max_product_subarray.py)
+    - [max_subarray](algorithms/dp/max_subarray.py)
+    - [min_cost_path](algorithms/dp/min_cost_path.py)
+    - [num_decodings](algorithms/dp/num_decodings.py)
+    - [regex_matching](algorithms/dp/regex_matching.py)
+    - [rod_cut](algorithms/dp/rod_cut.py)
+    - [word_break](algorithms/dp/word_break.py)
+    - [fibonacci](algorithms/dp/fib.py)
+- [graph : 그래프](algorithms/graph)
+    - [strongly_connected](algorithms/graph/checkDiGraphStronglyConnected.py)
+    - [clone_graph](algorithms/graph/clone_graph.py)
+    - [cycle_detection](algorithms/graph/cycle_detection.py)
+    - [find_all_cliques](algorithms/graph/find_all_cliques.py)
+    - [find_path](algorithms/graph/find_path.py)
+    - [graph](algorithms/graph/graph.py)
+    - [markov_chain](algorithms/graph/markov_chain.py)
+    - [minimum_spanning_tree](algorithms/graph/minimum_spanning_tree.py)
+    - [satisfiability](algorithms/graph/satisfiability.py)
+    - [tarjan](algorithms/graph/tarjan.py)
+    - [traversal](algorithms/graph/traversal.py)
+- [heap : 힙](algorithms/heap)
+    - [merge_sorted_k_lists](algorithms/heap/merge_sorted_k_lists.py)
+    - [skyline](algorithms/heap/skyline.py)
+    - [sliding_window_max](algorithms/heap/sliding_window_max.py)
+    - [binary_heap](algorithms/heap/binary_heap.py)
+- [linkedlist : 연결 리스트](algorithms/linkedlist)
+    - [add_two_numbers](algorithms/linkedlist/add_two_numbers.py)
+    - [copy_random_pointer](algorithms/linkedlist/copy_random_pointer.py)
+    - [delete_node](algorithms/linkedlist/delete_node.py)
+    - [first_cyclic_node](algorithms/linkedlist/first_cyclic_node.py)
+    - [is_cyclic](algorithms/linkedlist/is_cyclic.py)
+    - [is_palindrome](algorithms/linkedlist/is_palindrome.py)
+    - [kth_to_last](algorithms/linkedlist/kth_to_last.py)
+    - [linkedlist](algorithms/linkedlist/linkedlist.py)
+    - [remove_duplicates](algorithms/linkedlist/remove_duplicates.py)
+    - [reverse](algorithms/linkedlist/reverse.py)
+    - [rotate_list](algorithms/linkedlist/rotate_list.py)
+    - [swap_in_pairs](algorithms/linkedlist/swap_in_pairs.py)
+    - [is_sorted](algorithms/linkedlist/is_sorted.py)
+    - [remove_range](algorithms/linkedlist/remove_range.py)
+- [map : 맵](algorithms/map)
+    - [hashtable](algorithms/map/hashtable.py)
+    - [separate_chaining_hashtable](algorithms/map/separate_chaining_hashtable.py)
+    - [longest_common_subsequence](algorithms/map/longest_common_subsequence.py)
+    - [randomized_set](algorithms/map/randomized_set.py)
+    - [valid_sudoku](algorithms/map/valid_sudoku.py)
+- [maths : 수학 계산](algorithms/maths)
+    - [base_conversion](algorithms/maths/base_conversion.py)
+    - [extended_gcd](algorithms/maths/extended_gcd.py)
+    - [gcd/lcm](algorithms/maths/gcd.py)
+    - [generate_strobogrammtic](algorithms/maths/generate_strobogrammtic.py)
+    - [is_strobogrammatic](algorithms/maths/is_strobogrammatic.py)
+    - [next_bigger](algorithms/maths/next_bigger.py)
+    - [next_perfect_square](algorithms/maths/next_perfect_square.py)
+    - [nth_digit](algorithms/maths/nth_digit.py)
+    - [prime_check](algorithms/maths/prime_check.py)
+    - [primes_sieve_of_eratosthenes](algorithms/maths/primes_sieve_of_eratosthenes.py)
+    - [pythagoras](algorithms/maths/pythagoras.py)
+    - [rabin_miller](algorithms/maths/rabin_miller.py)
+    - [rsa](algorithms/maths/rsa.py)
+    - [sqrt_precision_factor](algorithms/maths/sqrt_precision_factor.py)
+    - [summing_digits](algorithms/maths/summing_digits.py)
+- [matrix : 행렬](algorithms/matrix)
+    - [sudoku_validator](algorithms/matrix/sudoku_validator.py)
+    - [bomb_enemy](algorithms/matrix/bomb_enemy.py)
+    - [copy_transform](algorithms/matrix/copy_transform.py)
+    - [count_paths](algorithms/matrix/count_paths.py)
+    - [matrix_rotation.txt](algorithms/matrix/matrix_rotation.txt)
+    - [rotate_image](algorithms/matrix/rotate_image.py)
+    - [search_in_sorted_matrix](algorithms/matrix/search_in_sorted_matrix.py)
+    - [sparse_dot_vector](algorithms/matrix/sparse_dot_vector.py)
+    - [sparse_mul](algorithms/matrix/sparse_mul.py)
+    - [spiral_traversal](algorithms/matrix/spiral_traversal.py)
+- [queues : 큐](algorithms/queues)
+    - [max_sliding_window](algorithms/queues/max_sliding_window.py)
+    - [moving_average](algorithms/queues/moving_average.py)
+    - [queue](algorithms/queues/queue.py)
+    - [reconstruct_queue](algorithms/queues/reconstruct_queue.py)
+    - [zigzagiterator](algorithms/queues/zigzagiterator.py)
+- [search : 탐색 알고리즘](algorithms/search)
+    - [binary_search](algorithms/search/binary_search.py)
+    - [first_occurance](algorithms/search/first_occurance.py)
+    - [last_occurance](algorithms/search/last_occurance.py)
+    - [search_insert](algorithms/search/search_insert.py)
+    - [two_sum](algorithms/search/two_sum.py)
+    - [search_range](algorithms/search/search_range.py)
+    - [find_min_rotate](algorithms/search/find_min_rotate.py)
+    - [search_rotate](algorithms/search/search_rotate.py)
+- [set : 집합](algorithms/set)
+    - [randomized_set](algorithms/set/randomized_set.py)
+    - [set_covering](algorithms/set/set_covering.py)
+- [sort : 정렬 알고리즘](algorithms/sort)
+    - [bubble_sort](algorithms/sort/bubble_sort.py)
+    - [comb_sort](algorithms/sort/comb_sort.py)
+    - [counting_sort](algorithms/sort/counting_sort.py)
+    - [heap_sort](algorithms/sort/heap_sort.py)
+    - [insertion_sort](algorithms/sort/insertion_sort.py)
+    - [meeting_rooms](algorithms/sort/meeting_rooms.py)
+    - [merge_sort](algorithms/sort/merge_sort.py)
+    - [quick_sort](algorithms/sort/quick_sort.py)
+    - [selection_sort](algorithms/sort/selection_sort.py)
+    - [sort_colors](algorithms/sort/sort_colors.py)
+    - [topsort](algorithms/sort/topsort.py)
+    - [wiggle_sort](algorithms/sort/wiggle_sort.py)
+- [stack : 스택](algorithms/stack)
+    - [longest_abs_path](algorithms/stack/longest_abs_path.py)
+    - [simplify_path](algorithms/stack/simplify_path.py)
+    - [stack](algorithms/stack/stack.py)
+    - [valid_parenthesis](algorithms/stack/valid_parenthesis.py)
+    - [stutter](algorithms/stack/stutter.py)
+    - [switch_pairs](algorithms/stack/switch_pairs.py)
+    - [is_consecutive](algorithms/stack/is_consecutive.py)
+    - [remove_min](algorithms/stack/remove_min.py)
+    - [is_sorted](algorithms/stack/is_sorted.py)
+- [strings : 문자열](algorithms/strings)
+    - [fizzbuzz](algorithms/strings/fizzbuzz.py)
+    - [delete_reoccurring_characters](algorithms/strings/delete_reoccurring_characters.py)
+    - [strip_url_params](algorithms/strings/strip_url_params.py)
+    - [validate_coordinates](algorithms/strings/validate_coordinates.py)
+    - [domain_extractor](algorithms/strings/domain_extractor.py)
+    - [merge_string_checker](algorithms/strings/merge_string_checker.py)
+    - [add_binary](algorithms/strings/add_binary.py)
+    - [breaking_bad](algorithms/strings/breaking_bad.py)
+    - [decode_string](algorithms/strings/decode_string.py)
+    - [encode_decode](algorithms/strings/encode_decode.py)
+    - [group_anagrams](algorithms/strings/group_anagrams.py)
+    - [int_to_roman](algorithms/strings/int_to_roman.py)
+    - [is_palindrome](algorithms/strings/is_palindrome.py)
+    - [license_number](algorithms/strings/license_number.py)
+    - [make_sentence](algorithms/strings/make_sentence.py)
+    - [multiply_strings](algorithms/strings/multiply_strings.py)
+    - [one_edit_distance](algorithms/strings/one_edit_distance.py)
+    - [rabin_karp](algorithms/strings/rabin_karp.py)
+    - [reverse_string](algorithms/strings/reverse_string.py)
+    - [reverse_vowel](algorithms/strings/reverse_vowel.py)
+    - [reverse_words](algorithms/strings/reverse_words.py)
+    - [roman_to_int](algorithms/strings/roman_to_int.py)
+    - [word_squares](algorithms/strings/word_squares.py)
+- [tree : 트리](algorithms/tree)
+    - [bst : 이진 탐색 트리](algorithms/tree/tree/bst)
+        - [array2bst](algorithms/tree/bst/array2bst.py)
+        - [bst_closest_value](algorithms/tree/bst/bst_closest_value.py)
+        - [BSTIterator](algorithms/tree/bst/BSTIterator.py)
+        - [delete_node](algorithms/tree/bst/delete_node.py)
+        - [is_bst](algorithms/tree/bst/is_bst.py)
+        - [kth_smallest](algorithms/tree/bst/kth_smallest.py)
+        - [lowest_common_ancestor](algorithms/tree/bst/lowest_common_ancestor.py)
+        - [predecessor](algorithms/tree/bst/predecessor.py)
+        - [serialize_deserialize](algorithms/tree/bst/serialize_deserialize.py)
+        - [successor](algorithms/tree/bst/successor.py)
+        - [unique_bst](algorithms/tree/bst/unique_bst.py)
+        - [depth_sum](algorithms/tree/bst/depth_sum.py)
+        - [count_left_node](algorithms/tree/bst/count_left_node.py)
+        - [num_empty](algorithms/tree/bst/num_empty.py)
+        - [height](algorithms/tree/bst/height.py)
+    - [red_black_tree : 레드 블랙 트리](algorithms/tree/red_black_tree)
+        - [red_black_tree](algorithms/tree/red_black_tree/red_black_tree.py)
+    - [segment_tree : 세그먼트 트리](algorithms/tree/segment_tree)
+        - [segment_tree](algorithms/tree/segment_tree/segment_tree.py)
+    - [traversal : 트리 순회](algorithms/tree/traversal)
+        - [inorder](algorithms/tree/traversal/inorder.py)
+        - [level_order](algorithms/tree/traversal/level_order.py)
+        - [zigzag](algorithms/tree/traversal/zigzag.py)
+    - [trie : 트라이](algorithms/tree/trie)
+        - [add_and_search](algorithms/tree/trie/add_and_search.py)
+        - [trie](algorithms/tree/trie/trie.py)
+    - [binary_tree_paths](algorithms/tree/binary_tree_paths.py)
+    - [bintree2list](algorithms/tree/bintree2list.py)
+    - [deepest_left](algorithms/tree/deepest_left.py)
+    - [invert_tree](algorithms/tree/invert_tree.py)
+    - [is_balanced](algorithms/tree/is_balanced.py)
+    - [is_subtree](algorithms/tree/is_subtree.py)
+    - [is_symmetric](algorithms/tree/is_symmetric.py)
+    - [longest_consecutive](algorithms/tree/longest_consecutive.py)
+    - [lowest_common_ancestor](algorithms/tree/lowest_common_ancestor.py)
+    - [max_height](algorithms/tree/max_height.py)
+    - [max_path_sum](algorithms/tree/max_path_sum.py)
+    - [min_height](algorithms/tree/min_height.py)
+    - [path_sum](algorithms/tree/path_sum.py)
+    - [path_sum2](algorithms/tree/path_sum2.py)
+    - [pretty_print](algorithms/tree/pretty_print.py)
+    - [same_tree](algorithms/tree/same_tree.py)
+    - [tree](algorithms/tree/tree.py)
+- [union-find : 합집합 찾기](algorithms/union-find)
+    - [count_islands](algorithms/union-find/count_islands.py)
+    
+## 기여자들
+이 저장소는 아래 사람들에 의해 유지되고 있습니다.
+
+* [Keon Kim](https://github.com/keon)
+* [Rahul Goswami](https://github.com/goswami-rahul)
+* [Christian Bender](https://github.com/christianbender)
+* [Ankit Agarwal](https://github.com/ankit167)
+* [Hai Hoang Dang](https://github.com/danghai)
+* [Saad](https://github.com/SaadBenn)
+
+그리고 이 저장소를 만드는데 도움을 준 [모든 기여자](https://github.com/keon/algorithms/graphs/contributors)
+분 들에게 감사를 표합니다.
diff --git a/algorithms/arrays/__init__.py b/algorithms/arrays/__init__.py
index 04afdb2..64ba130 100644
--- a/algorithms/arrays/__init__.py
+++ b/algorithms/arrays/__init__.py
@@ -3,6 +3,7 @@ from .flatten import *
 from .garage import *
 from .josephus import *
 from .longest_non_repeat import *
+from .max_ones_index import *
 from .merge_intervals import *
 from .missing_ranges import *
 from .move_zeros import *
diff --git a/algorithms/arrays/max_ones_index.py b/algorithms/arrays/max_ones_index.py
new file mode 100644
index 0000000..bee1f76
--- /dev/null
+++ b/algorithms/arrays/max_ones_index.py
@@ -0,0 +1,43 @@
+"""
+Find the index of 0 to be replaced with 1 to get
+longest continuous sequence
+of 1s in a binary array.
+Returns index of 0 to be
+replaced with 1 to get longest
+continuous sequence of 1s.
+If there is no 0 in array, then
+it returns -1.
+
+e.g.
+let input array = [1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1]
+If we replace 0 at index 3 with 1, we get the longest continuous
+sequence of 1s in the array.
+So the function return => 3
+"""
+
+
+def max_ones_index(arr):
+
+    n = len(arr)
+    max_count = 0
+    max_index = 0
+    prev_zero = -1
+    prev_prev_zero = -1
+
+    for curr in range(n):
+
+        # If current element is 0,
+        # then calculate the difference
+        # between curr and prev_prev_zero
+        if arr[curr] == 0:
+            if curr - prev_prev_zero > max_count:
+                max_count = curr - prev_prev_zero
+                max_index = prev_zero
+
+            prev_prev_zero = prev_zero
+            prev_zero = curr
+
+    if n - prev_prev_zero > max_count:
+        max_index = prev_zero
+
+    return max_index
\ No newline at end of file
diff --git a/algorithms/bit/__init__.py b/algorithms/bit/__init__.py
index 7cd175f..383923d 100644
--- a/algorithms/bit/__init__.py
+++ b/algorithms/bit/__init__.py
@@ -13,3 +13,5 @@ from .find_difference import *
 from .has_alternative_bit import *
 from .insert_bit import *
 from .remove_bit import *
+from .count_flips_to_convert import *
+from .flip_bit_longest_sequence import *
diff --git a/algorithms/bit/count_flips_to_convert.py b/algorithms/bit/count_flips_to_convert.py
new file mode 100644
index 0000000..6ba1d11
--- /dev/null
+++ b/algorithms/bit/count_flips_to_convert.py
@@ -0,0 +1,19 @@
+"""
+Write a function to determine the number of bits you would need to
+flip to convert integer A to integer B.
+For example:
+Input: 29 (or: 11101), 15 (or: 01111)
+Output: 2
+"""
+
+
+def count_flips_to_convert(a, b):
+
+    diff = a ^ b
+
+    # count number of ones in diff
+    count = 0
+    while diff:
+        diff &= (diff - 1)
+        count += 1
+    return count
diff --git a/algorithms/bit/flip_bit_longest_sequence.py b/algorithms/bit/flip_bit_longest_sequence.py
new file mode 100644
index 0000000..a952edb
--- /dev/null
+++ b/algorithms/bit/flip_bit_longest_sequence.py
@@ -0,0 +1,30 @@
+"""
+You have an integer and you can flip exactly one bit from a 0 to 1.
+Write code to find the length of the longest sequence of 1s you could create.
+For example:
+Input: 1775 ( or: 11011101111)
+Output: 8
+"""
+
+
+def flip_bit_longest_seq(num):
+
+    curr_len = 0
+    prev_len = 0
+    max_len = 0
+
+    while num:
+        if num & 1 == 1:  # last digit is 1
+            curr_len += 1
+
+        elif num & 1 == 0:  # last digit is 0
+            if num & 2 == 0:  # second last digit is 0
+                prev_len = 0
+            else:
+                prev_len = curr_len
+            curr_len = 0
+
+        max_len = max(max_len, prev_len + curr_len)
+        num = num >> 1  # right shift num
+
+    return max_len + 1
diff --git a/algorithms/sort/__init__.py b/algorithms/sort/__init__.py
index 20a3cf3..665a0d7 100644
--- a/algorithms/sort/__init__.py
+++ b/algorithms/sort/__init__.py
@@ -6,3 +6,5 @@ from .insertion_sort import *
 from .merge_sort import *
 from .quick_sort import *
 from .selection_sort import *
+from .bucket_sort import *
+from .shell_sort import *
diff --git a/algorithms/sort/bucket_sort.py b/algorithms/sort/bucket_sort.py
new file mode 100644
index 0000000..d89232c
--- /dev/null
+++ b/algorithms/sort/bucket_sort.py
@@ -0,0 +1,28 @@
+def bucket_sort(arr):
+    ''' Bucket Sort
+        Complexity: O(n^2)
+        The complexity is dominated by nextSort
+    '''
+    # The number of buckets and make buckets
+    num_buckets = len(arr)
+    buckets = [[] for bucket in range(num_buckets)]
+    # Assign values into bucket_sort
+    for value in arr:
+        index = value * num_buckets // (max(arr) + 1)
+        buckets[index].append(value)
+    # Sort
+    sorted_list = []
+    for i in range(num_buckets):
+        sorted_list.extend(next_sort(buckets[i]))
+    return sorted_list
+
+def next_sort(arr):
+    # We will use insertion sort here.
+    for i in range(1, len(arr)):
+        j = i - 1
+        key = arr[i]
+        while arr[j] > key and j >= 0:
+            arr[j+1] = arr[j]
+            j = j - 1
+        arr[j + 1] = key
+    return arr
diff --git a/algorithms/sort/shell_sort.py b/algorithms/sort/shell_sort.py
new file mode 100644
index 0000000..61f5f61
--- /dev/null
+++ b/algorithms/sort/shell_sort.py
@@ -0,0 +1,21 @@
+def shell_sort(arr):
+    ''' Shell Sort
+        Complexity: O(n^2)
+    '''
+    n = len(arr)
+    # Initialize size of the gap
+    gap = n//2
+    
+    while gap > 0:
+        y_index = gap
+        while y_index < len(arr):
+            y = arr[y_index]
+            x_index = y_index - gap
+            while x_index >= 0 and y < arr[x_index]:
+                arr[x_index + gap] = arr[x_index]
+                x_index = x_index - gap
+            arr[x_index + gap] = y
+            y_index = y_index + 1
+        gap = gap//2
+        
+    return arr


Test patch:
diff --git a/tests/test_array.py b/tests/test_array.py
index 88cf591..ed398bc 100644
--- a/tests/test_array.py
+++ b/tests/test_array.py
@@ -1,16 +1,19 @@
-from algorithms.arrays import delete_nth, delete_nth_naive
-from algorithms.arrays import flatten, flatten_iter
-from algorithms.arrays import garage
-from algorithms.arrays import josephus
-from algorithms.arrays import longest_non_repeat_v1, longest_non_repeat_v2
-from algorithms.arrays import Interval, merge_intervals
-from algorithms.arrays import missing_ranges
-from algorithms.arrays import move_zeros
-from algorithms.arrays import plus_one_v1, plus_one_v2, plus_one_v3
-from algorithms.arrays import rotate_v1, rotate_v2, rotate_v3
-from algorithms.arrays import summarize_ranges
-from algorithms.arrays import three_sum
-from algorithms.arrays import two_sum
+from algorithms.arrays import (
+    delete_nth, delete_nth_naive,
+    flatten_iter, flatten,
+    garage,
+    josephus,
+    longest_non_repeat_v1, longest_non_repeat_v2,
+    Interval, merge_intervals,
+    missing_ranges,
+    move_zeros,
+    plus_one_v1, plus_one_v2, plus_one_v3,
+    rotate_v1, rotate_v2, rotate_v3,
+    summarize_ranges,
+    three_sum,
+    two_sum,
+    max_ones_index
+)
 
 import unittest
 
@@ -152,6 +155,15 @@ class TestLongestNonRepeat(unittest.TestCase):
         self.assertEqual(longest_non_repeat_v2(string), 3)
 
 
+class TestMaxOnesIndex(unittest.TestCase):
+
+    def test_max_ones_index(self):
+
+        self.assertEqual(9, max_ones_index([1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1]))
+        self.assertEqual(3, max_ones_index([1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1]))
+        self.assertEqual(-1, max_ones_index([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))
+
+
 class TestMergeInterval(unittest.TestCase):
 
     def test_merge(self):
diff --git a/tests/test_bit.py b/tests/test_bit.py
index 01290c2..fdc80a1 100644
--- a/tests/test_bit.py
+++ b/tests/test_bit.py
@@ -1,7 +1,9 @@
 from algorithms.bit import (
     add_bitwise_operator,
     count_ones_iter, count_ones_recur,
+    count_flips_to_convert,
     find_missing_number, find_missing_number2,
+    flip_bit_longest_seq,
     is_power_of_two,
     reverse_bits,
     single_number,
@@ -19,8 +21,13 @@ from algorithms.bit import (
 import unittest
 import random
 
+
 class TestSuite(unittest.TestCase):
 
+    def setUp(self):
+        """Initialize seed."""
+        random.seed("test")
+
     def test_add_bitwise_operator(self):
         self.assertEqual(5432 + 97823, add_bitwise_operator(5432, 97823))
         self.assertEqual(0, add_bitwise_operator(0, 0))
@@ -55,9 +62,15 @@ class TestSuite(unittest.TestCase):
         # 0 -> 0
         self.assertEqual(0, count_ones_iter(0))
 
-    def setUp(self):
-        """Initialize seed."""
-        random.seed("test")
+    def test_count_flips_to_convert(self):
+        # 29: 11101 and 15: 01111
+        self.assertEqual(2, count_flips_to_convert(29, 15))
+        # 45: 0000101101 and 987: 1111011011
+        self.assertEqual(8, count_flips_to_convert(45, 987))
+        # 34: 100010
+        self.assertEqual(0, count_flips_to_convert(34, 34))
+        # 34: 100010 and 53: 110101
+        self.assertEqual(4, count_flips_to_convert(34, 53))
 
     def test_find_missing_number(self):
 
@@ -79,6 +92,16 @@ class TestSuite(unittest.TestCase):
         random.shuffle(nums)
         self.assertEqual(12345, find_missing_number2(nums))
 
+    def test_flip_bit_longest_seq(self):
+        # 1775: 11011101111
+        self.assertEqual(8, flip_bit_longest_seq(1775))
+        # 5: 101
+        self.assertEqual(3, flip_bit_longest_seq(5))
+        # 71: 1000111
+        self.assertEqual(4, flip_bit_longest_seq(71))
+        # 0: 0
+        self.assertEqual(1, flip_bit_longest_seq(0))
+
     def test_is_power_of_two(self):
 
         self.assertTrue(is_power_of_two(64))
@@ -215,5 +238,6 @@ class TestSuite(unittest.TestCase):
         self.assertEqual(5, remove_bit(21, 4))
         self.assertEqual(10, remove_bit(21, 0))
 
+
 if __name__ == '__main__':
     unittest.main()
diff --git a/tests/test_sort.py b/tests/test_sort.py
index 07d13c8..43d5bf2 100644
--- a/tests/test_sort.py
+++ b/tests/test_sort.py
@@ -6,7 +6,9 @@ from algorithms.sort import (
     insertion_sort,
     merge_sort,
     quick_sort,
-    selection_sort
+    selection_sort,
+    bucket_sort,
+    shell_sort
 )
 
 import unittest
@@ -49,6 +51,15 @@ class TestSuite(unittest.TestCase):
         self.assertEqual([1, 5, 23, 57, 65, 1232],
                          selection_sort([1, 5, 65, 23, 57, 1232]))
 
+    def test_bucket_sort(self):
+        self.assertEqual([1, 5, 23, 57, 65, 1232],
+                        bucket_sort([1, 5, 65, 23, 57, 1232]))
+
+    def test_shell_sort(self):
+        self.assertEqual([1, 5, 23, 57, 65, 1232],
+                        shell_sort([1, 5, 65, 23, 57, 1232]))
+                                          
+
 
 if __name__ == "__main__":
     unittest.main()