세트(Set)으로 배열(Array)에서 중복값 제거하기

Lena·2020년 3월 10일
2
post-thumbnail

📢기억하려고 기록해놓는 글

사전지식

세트(Set)이란?

  • 같은 타입의 데이터들의 묶음
  • 순서 없음
  • 컬렉션 타입
  • 세트 내의 값은 모두 유일한 값
  • 세트의 요소는 해시 가능한 값
  • 축약형 표현이 없고 Set<타입>() 과 같이 Set임을 명시해야함
  • 추가 및 삭제 : insert(:), remove(:) -> Set를 반환
  • 교집합 set.intersection(컬렉션) / 여집합 set.symmetricDifference(컬렉션) / 합집합 set.union(컬렉션) / 차집합 set.subtracting(컬렉션)
    📢(여기서 컬렉션은 배열, 세트, 딕셔너리)

Array(배열)과 차이점은?

가장 큰 차이점은 배열은 세트와 달리 인덱스가 존재합니다. 그리고 중복값을 허용합니다.

Set으로 Array(배열)에서 중복값 제거하기

배열에 있는 중복값을 제거하고 싶을 때

// Set 없이 반복문으로 중복값 제거하기 
func removeDuplication(in array: [Int]) -> [Int]{
        var duplicationRemovedArray = array
        for index in 0 ... duplicationRemovedArray.count-1 {
            if index + 1 <= duplicationRemovedArray.count-1 {
                if duplicationRemovedArray[index] == duplicationRemovedArray[index+1] {
                    duplicationRemovedArray.remove(at: index)
                }
            }
        }
        return duplicationRemovedArray
   }
        
// Set 으로 중복값 제거하기
func removeDuplication(in array: [Int]) -> [Int]{
    let set = Set(array)
    let duplicationRemovedArray = Array(set)
    return duplicationRemovedArray
}

중복값을 담고있는 array 배열을 Set으로 변환해주면 중복된 값들을 제거한 Set을 반환합니다. 중복값이 제거된 set를 다시 Array array로 변환하면 중복값이 제거된 배열이 됩니다.

궁금한 점, 틀린 내용, 오타 지적, 오역 지적 등 피드백 환영합니다! 댓글로 남겨주세요!
😊 🙏

profile
개발 공부하고 있어요!

5개의 댓글

comment-user-thumbnail
2020년 3월 10일

Set 자료구조로군요!! 알고리즘 문제 풀 때에도 Set 자료구조의 특성을 이용한 문제도 나오곤해요!

1개의 답글
comment-user-thumbnail
2020년 6월 26일

코드가 많이 간결해 지네요.
혹시 퍼포먼스 차이도 크게 있나요?

답글 달기