파이썬 리스트 값에서 연속된 값을 제거하고 출력하고싶습니다.

조회수 453회
# 데이터를 입력받음
# 입력받은 데이터가 5개이상 같은수가나오면 해당 데이터 삭제
# 나머지 데이터를 반환
number = int(input("문항 수를 입력하세요!"))

def get_data():
    list = []
    result_list = []

    for i in range(number):
        data = int(input(f"{i+1}번 답안을 입력하세요!"))
        list.append(data)

    if(list[0:5]==[1,1,1,1,1]):
        del list[0:5]
        result_list = list
        print(result_list)
    else:
        print(list)


get_data()
print(get_data)

제가 일단 작성한건 범위를 정해놓고 그 범위에 연속된 값이 나오면 삭제되도록 구현했는데

예를들어 리스트값에서 [2,5,4,3,2,1,1,1,1,1,2,3,5,4,7,5,6] 이렇게 중간에 연속된값이 나와도 삭제 하고싶습니다.

  • 코드를 이미지로 올리지 마세요. nowp 2022.5.21 06:14
  • 죄송합니다. 처음이용해봐서 수정해보겠습니다 안승헌 2022.5.21 09:16

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    잘 모르겠어서 좀 무식하게 접근해 봤습니다.

    dabandl = [2,5,4,3,2,1,1,1,1,1,2,3,5,4,7,5,6]
    
    for beonho, daban in enumerate(dabandl):
        if beonho >= 4 :
            daban1 = dabandl[beonho - 1]
            daban2 = dabandl[beonho - 2]
            daban3 = dabandl[beonho - 3]
            daban4 = dabandl[beonho - 4]
            if daban == daban1 and daban1 == daban2 and daban2 == daban3 and daban3 == daban4 :
                del dabandl[beonho - 4 : beonho + 1] # daban도 없애야 하므로 +1 필요
    
    print(dabandl)
    
    • 혹시 코드 간단한 설명부탁드려도될까요?ㅠㅠ 이해를 잘 못하겠습니다 안승헌 2022.5.21 13:06
    • 5번째 원소부터 차례대로 검사를 합니다. 무슨 검사냐? 지금 이 원소가 그 앞전 원소와 같은지, 그리고 그 앞전전 원소와도 같은지... 해서 총 5개의 원소가 다 똑같은 상황인지 확인하는 검사입니다. 이 검사를 통과하면 그 앞전전전전 원소부터 그 원소까지 다 지워버립니다. 엽토군 2022.5.21 13:43

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

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

(ಠ_ಠ)
(ಠ‿ಠ)