두 리스트가 원형리스트로 나타냈을 때 동일한지 알아내는 알고리즘

조회수 924회

두 리스트가 원형리스트로 나타냈을 때 동일한지 알아내려면 어떻게 해야 될까요?

a[0] = [1, 1, 1, 0, 0]
a[1] = [1, 1, 0, 0, 1]
a[2] = [0, 1, 1, 1, 0]

이 세개는 각 인덱스에서 보면 같은 리스트는 아니지만 원형리스트로 보면 다 같은 리스트입니다.

인풋으로 들어오는 게 같은 리스트일 수도 있고, 다른 리스트일 수도 있는데 이걸 어떻게 구분해야 할지 막막합니다.

제가 생각하는 건

  1. 두 리스트를 비교해서 같으면 True return
  2. pop(0)한 걸 append()로 붙이고 1 검사
  3. 한바퀴 돌때까지 반복

2에 pop-append는 numpy.roll()이 대신 해준다고 해서 갖다 썼는데

리스트 길이가 1000쯤 되니까 False를 return 하는데만 엄청 오래걸립니다 ㅜ

소스코드

def is_dup(a, b):
    for i in range(len(a)):
        if a == list(numpy.roll(b, i)):
            return True
    return False

1 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.