Language-LAB/Algorithm

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

JS LAB 2023. 6. 27. 15:16
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
반응형