본문 바로가기
Language-LAB/Algorithm

[알고리즘] 리스트의 중복항목 탐색

by JS LAB 2023. 6. 27.
728x90
반응형
 

리스트의 중복 항목 탐색 문제

 

n개의 항목으로 이루어진 어떤 리스트 A가 주어졌다. 

 

A에 중복된 항목이 있는지 없는지를 검사해 보자.

 

방법1

 

이중 반복문을 사용하여 원소끼리 비교한다.

 

# 1번을 해보세요!
A = list(map(int,input().split()))

# 2번을 해보세요!
def unique_elements(A):
    for i in range(len(A)):
        for j in range(i + 1, len(A)):
            if A[i] == A[j]:
                return False
    return True

# 출력합니다!
print(unique_elements(A))

 

아래의 코드처럼 짜면 안된다. A[i]는 반드시 A리스트에 있기 때문에 무조건  False만 나온다.!

 

def unique_elements(A):
    for i in range(len(A)):
        if A[i] in A:
            return False
    return True

 

다른 방법은 없을까?

 

방법 2

 

set 을 이용해보자!

 

set 은 중복값을 허용하지 않는 자료형이므로, 

 

리스트를 set 으로 변환하고,

 

원본 리스트와 길이를 비교하여 중복 여부를 확인할 수 있다!!

 

def unique_elements(A):
    unique_set = set(A)
    return len(unique_set) == len(A)

 

방법 3

 

정렬 이용하여 중복 확인

 

리스트를 정렬한 후 인접한 요소들을 비교하여 중복 여부 확인

 

정렬하면 중복된 값들은 인접하게 되므로, 이를 이용한다

 

def unique_elements(A):
    sorted_A = sorted(A)
    for i in range(1, len(sorted_A)):
        if sorted_A[i] == sorted_A[i - 1]:
            return False
    return True
728x90
반응형