• Home
  • About
    • JOOS photo

      JOOS

      Joos's blog

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

[leet_code] 842. Split Array into Fibonacci Sequence with python3

11 Aug 2019

Reading time ~1 minute

문제 : https://leetcode.com/problems/split-array-into-fibonacci-sequence/

목표:

  • substring이 피보나치 수열이 맞게 해라.

조건:

  • 숫자 앞에 0이 있는 경우는 없다.
    • 07 의 숫자는 아니다.
  • 만약에 조건에 맞는 피보나치가 안되면 []이다.
  • 숫자의 크기는 2**31 - 1 보다 작아야한다 ‘ㅡ’

    solution 설명 :

  • O(N**3)
  • brute force로 다해보는 것이다 ㅇ<-<

class Solution:
  def splitItoFibonacci(S):
      L, T, t = len(S), "", []
      for i in range(1,L-2):
          for j in range(1,L-i-1):
              a, b = int(S[:i]), int(S[i:i+j])
              T, t = S[:i+j], [a,b]
              while len(T) < L:
                  c = a + b
                  T += str(c)
                  t += [c]
                  a, b = b, c
              # 일단 맞든 틀리든 한다. 계속 한다.
              if len(T) == L and T == S and len(t) > 2 and t[-1] < 2**31 - 1:
                  # 맞으면 그 때 return이 되는거다. 그리고 0인 경우를 안해도 그냥 어차피 여기서 걸러진다.

                  # len(T) == L and T == S는 그냥 대놓고 맞춰보는거
                  # len(t) > 2 는 개수가 충분히 찾나 확인
                  # t[-1] < 2**31 - 1 숫자가 제한 넘지 않나 확인
                  return t
      return [] # 앞에서 return이 안됬으면 그냥 [] 주는 것이다.
  # 대신 n세제곱


algorithmleet_codepython Share Tweet +1