python list 중복 요소

조회수 1352회

안녕하세요 과제 하던 중 모르던 게 생겨서 질문드려요 ㅠ 지금 board game을 만드는 과제 중인데 장기말이 일정한 규칙에 따라 움직이는 게임이거든요. 그런데 장기말의 위치를 track하는 함수를 만들어야 하는데 골치가 아파서;;

예를 들어 list=[(1,2),(3,4),(4,5),(7,8)(9,10),(4,5),(7,8)(9,10),(4,5),(7,8)(9,10),(4,5),(7,8)(9,10).....] 이런식으로 (4,5),(7,8)(9,10)이 반복되는 list가 있다고 가정해요. 이럴 때는 제가 무슨 요소가 반복되는 줄 아니깐 중복되는 요소를 찾는데 문제가 없지만 만약 제가 list의 element를 정확히 모르고 반복되는 수열(?) 또한 모른다고 했을 때는 어떻게 해야 하나요?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 반복되는 수열(?) 이것이 왜 필요한 것이고 없을때는 어떻해 하는지? 이것을 이내용을 보는 사람이 알 수 있을까요? 문제가 무엇이고 어디까지 진행을 했으며 막히는 부분이 대체 무엇인지를 기술해야지요. 먼저 질문자가 문제를 정확히 파악해야 되는게 먼저 같고 어떤 전략으로 문제 해결을 하려고 하는지 시도해본 방법은 무엇인지를 기술해보세요 정영훈 2018.5.6 23:41

1 답변

  • 댓글의 정영훈님 말씀대로 질문이 애매합니다... 질문을 더 잘 정리해 주셨으면 좋을뻔 했습니다.

    반복되는 패턴의 길이가 3이라면 이렇게 짜면 되긴 하겠네요. 반복을 찾는 작업에서는 좌표나, 특정 숫자나 같으니 특정 숫자를 기준으로 작성했습니다.

    혹시나 패턴의 길이가 3이 아니라, 임의의 패턴 길이가 나올 수 있다면 더 복잡한 문제가 됩니다.

    아래 코드를 잘 응용해 보시면 좋겠네요.

    def unique_list(l):
      x = []
      for a in l:
        if a not in x:
          x.append(a)
      return x
    
    numbers = [1,2,3,4,5,4,5,4,5]
    patterns = []
    
    for i, number in enumerate(numbers):
        if i == len(numbers)-2:
            break
        patterns.append(numbers[i:i+3])
    unique_patterns=unique_list(patterns)
    
    for pattern in unique_patterns:
        print("{}: {}".format(pattern, patterns.count(pattern)))
    

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

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)