코딩테스트를 대비하면서 알고리즘 문제를 풀다보면 리스트의 중복 요소를 제거하는 작업을 해야하는 경우가 많다. 그동안 for문을 사용해 중복 요소를 제거해왔지만, 알고리즘 문제를 풀면서 반복문을 많이 사용하는 것은 바람직하지 않다. (연산 시간이 오래 걸림)
for문을 비롯한 반복문은 사용을 줄일 수록 시간 초과 에러가 발생하는 것을 방지할 수 있다. 반복문을 사용하지 않고도 중복되는 값을 제거하는 방법을 알아보자.
alist = list(set(arr))
lens.append(len(alist))
중복 값을 제거할 배열(arr)에 set 연산을 진행하고, list 형으로 변환한다.
리스트(alist)를 선언하여 해당 배열에 중복 값을 제거한 리스트를 저장한다.
set 자료구조는 중복이 불가능하다는 성질을 가진다. 이를 활용해 리스트의 중복 값을 제거할 수 있다.
1) set(리스트) : 리스트를 set 타입으로 변경해 중복을 제거한다.
2) list(set(리스트)) : 생성된 결과 값을 list로 감싸서 데이터 타입을 list로 변경한다.
*추가 예정
반복문을 사용하는 방법도 추가로 정리한다.
프로그래머스의 포켓몬(해시) 문제를 풀면서 구현한 코드이다.
for i in range(len(arr)):
if arr[i] not in alist:
alist.append(arr[i])
리스트의 모든 값을 for문을 돌려 탐색하면서 새로 생성한 리스트에 만약 해당 값이 존재하지 않는 경우 추가해주는 방식이다.