Elixir로 ABC177의 A, B, C 문제를 제압!
18367 단어 Elixir
소개
@u2dayo 님의 【AtCoder 해설】Python으로 ABC177의 A, B, C 문제를 제압한다!을 쳐다 보았습니다.
문제
AtCoder Beginner Contest 177
defmodule AtCoder177A do
def main do
[d, t, s] =
IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
solve(d, t, s) |> IO.puts()
end
defp solve(d, t, s) when t * s >= d, do: "Yes"
defp solve(_, _, _), do: "No"
end
제출
문제 B - Substring 의 해설을 매우 참고로 했습니다
defmodule Main do
def main do
s = IO.read(:line) |> String.trim()
t = IO.read(:line) |> String.trim()
solve(s, t) |> IO.puts()
end
def solve(s, t) do
len = String.length(t)
t_charlist = String.to_charlist(t)
String.to_charlist(s)
|> Enum.chunk_every(len, 1, :discard)
|> Enum.map(&Enum.zip(&1, t_charlist))
|> Enum.map(&Enum.map(&1, fn {a, b} -> a == b end))
|> Enum.map(&Enum.count(&1, fn b -> b == false end))
|> Enum.min()
end
end
원래 기사 가 대활약입니다!
제출
문제 C - Sum of product of pairs 의 해설을 매우 참고로 했습니다
defmodule Main do
@prime 1000000007
def main do
IO.read(:line)
list = IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
solve(list) |> IO.puts()
end
def solve(list) do
list
|> Enum.reduce({Enum.sum(list), 0}, fn x, {sum, ans} ->
sum = sum - x
ans = ans + sum * x
{sum, ans}
end)
|> elem(1)
|> rem(@prime)
end
end
원래 기사 가 대활약입니다!
제출을 일일이 사용해 쓴 곳 TLE (Time Limit Exceeded) 해 버린 예
defmodule Main do
def main do
n = IO.read(:line) |> String.trim() |> String.to_integer()
list = IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
solve(n, list) |> IO.puts()
end
def solve(n, list) do
0..(n - 1)
|> Enum.reduce({Enum.sum(list), 0}, fn i, {sum, ans} ->
sum = sum - Enum.at(list, i)
ans = ans + sum * Enum.at(list, i)
{sum, ans}
end)
|> elem(1)
|> rem(1000000007)
end
end
Wrapping Up
AC (Accepted)
가 되어 기쁘게 생각하고 있습니다 Reference
이 문제에 관하여(Elixir로 ABC177의 A, B, C 문제를 제압!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/torifukukaiou/items/70d52ddb6c192d1f012d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)