Elixir에서 ABC162의 A, B, C 문제를 풀어보세요!

10030 단어 AtCoderElixir

소개



  • Elixir 에서 해 보았습니다

  • 문제


  • AtCoder Beginner Contest 162
  • A ~ C까지 풀어보십시오
  • 이번에는 Doctests을 작성하지 않았습니다

  • 준비



  • Elixir 설치
  • 앞에 된장입니다만, 설치 등 참고로 해 주세요

  • 프로젝트를 만들어 둡니다
  • $ mix new at_coder
    $ cd at_coder
    

    문제 A - Lucky 7


  • 문제문은 링크처를 참조해 주세요
  • defmodule Main do
      def main do
        IO.read(:line) |> String.trim() |> String.contains?("7") |> if(do: "Yes", else: "No") |> IO.puts
      end
    end
    

  • 제출의 경우 모듈 이름은 Main이어야합니다


  • 이 음색에서 B 문제, C 문제를 해결합니다.

    문제 B - FizzBuzz Sum


    defmodule Main do
      def main do
        n = IO.read(:line) |> String.trim() |> String.to_integer()
        1..n |> Enum.reduce(0, fn i, acc -> if rem(i,3) == 0 or rem(i,5) == 0, do: acc, else: acc + i end) |> IO.puts()
      end
    end
    

  • 제출의 경우 모듈 이름은 Main이어야합니다



  • 문제 C - Sum of gcd of Tuples (Easy)


  • 문제문은 링크처를 참조해 주세요
  • defmodule Main do
      def main do
        k = IO.read(:line) |> String.trim() |> String.to_integer()
        list = for i <- 1..k, j <- 1..k, do: Integer.gcd(i, j)
        1..k |> Enum.flat_map(fn i -> Enum.map(list, & Integer.gcd(&1, i)) end) |> Enum.sum |> IO.puts
      end
    end
    

  • 제출의 경우 모듈 이름은 Main이어야합니다
  • 타임 아웃이 될까 걱정했습니다만 안전(1689 ms)이었습니다

  • Integer.gcd/2은 최대 공약수 (The greatest common divisor)를 계산합니다.

    Wrapping Up


  • A~C는 자력으로 갈 수 있었습니다!
  • 문제 보고 iex로 조금 해서 갈 수 있을 것 같았기 때문에 Main 모듈을 만나서 인간 컴파일? 만 통해 직접 제출해 보았습니다
  • 그래서 이번에는 Doctests 은 쓰지 않았습니다.
  • 변명이 안되요?

  • 컴파일 오류없이 AC 잡혔습니다

  • Enjoy Elixir !!!
  • 좋은 웹페이지 즐겨찾기