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
반응형
'Language-LAB > Algorithm' 카테고리의 다른 글
[알고리즘] 퀵정렬(Quick Sort) (0) | 2023.07.09 |
---|---|
[알고리즘] 선택정렬(Selection Sort) (0) | 2023.07.08 |
[알고리즘] 삽입정렬(Insertion Sort) (0) | 2023.07.08 |
[알고리즘] 하노이의 탑 (0) | 2023.07.03 |
[알고리즘] 알고리즘 개요 (0) | 2023.06.25 |