Skip to content

Commit e86ad1e

Browse files
authored
Merge pull request DaleStudy#87 from meoooh/main
[김한기] - Week 4 solutions
2 parents ca71f64 + c1455f9 commit e86ad1e

File tree

5 files changed

+57
-0
lines changed

5 files changed

+57
-0
lines changed

counting-bits/han.exs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defmodule Solution do
2+
@spec count_bits(n :: integer) :: [integer]
3+
def count_bits(n) do
4+
Enum.map(0..n, fn i ->
5+
Integer.digits(i, 2) |> Enum.count(&(&1 != 0))
6+
end)
7+
end
8+
end

group-anagrams/han.exs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
defmodule Solution do
2+
@spec group_anagrams(strs :: [String.t]) :: [[String.t]]
3+
def group_anagrams(strs) do
4+
Enum.group_by(strs, &(String.codepoints(&1) |> Enum.sort)) |> Map.values
5+
end
6+
end
7+
8+
# 최초엔 아래 코드로 시도했으나 strs.length가 커지면 시간초과...
9+
#
10+
# defmodule Solution do
11+
# @spec group_anagrams(strs :: [String.t]) :: [[String.t]]
12+
# def group_anagrams(strs) when length(strs) < 2, do: [strs]
13+
# def group_anagrams([], res), do: res
14+
15+
# def group_anagrams([head|tail], res \\ []) do
16+
# split_sort_head = split_sort(head)
17+
# anagrams = Enum.reduce(tail, [head], fn x, acc ->
18+
# if split_sort(x) == split_sort_head do
19+
# acc ++ [x]
20+
# else
21+
# acc
22+
# end
23+
# end)
24+
25+
# group_anagrams(tail -- anagrams, [anagrams|res])
26+
# end
27+
28+
# defp split_sort(str) do
29+
# String.graphemes(str) |> Enum.sort_by(&(&1), :asc)
30+
# end
31+
# end

missing-number/han.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
defmodule Solution do
2+
@spec missing_number(nums :: [integer]) :: integer
3+
def missing_number(nums) do
4+
(0..length(nums) |> Enum.to_list) -- nums |> Enum.at(0)
5+
end
6+
end

number-of-1-bits/han.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
defmodule Solution do
2+
@spec hamming_weight(n :: integer) :: integer
3+
def hamming_weight(n) do
4+
Integer.to_string(n, 2) |> String.graphemes |> Enum.count(& &1 != "0")
5+
end
6+
end

reverse-bits/han.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# @param {Integer} n, a positive integer
2+
# @return {Integer}
3+
def reverse_bits(n)
4+
# 이유는 모르겠으나 문제 설명과는 달리 leetcode 루비 테스트코드에선 n이 10진수 Integer로 들어오네요.
5+
n.to_s(2).rjust(32,'0').reverse.to_i(2)
6+
end

0 commit comments

Comments
 (0)