[Swift] 배열에서 중복 요소를 제거하는 함수 만들기 (feat. Set)

Logan·2020년 10월 16일
2
post-thumbnail

랜덤한 숫자를 가진 배열 만들기

for in반복문을 사용하면 지정된 횟수만큼 코드를 반복할 수 있습니다. 반복문 링크

var randomArray = [Int]()

for _ in 1...10 {
    randomArray.append(Int.random(in: 1...10))
}

빈배열을 선언한 다음, 반복문을 사용해 .append(__ newElement: Int) method로 빈배열에 요소를 10번 추가했습니다.

요소는 랜덤한 정수형 숫자여야 하기 때문에,
.random(in range: ClosedRange) -> Int method를 사용해 1부터 10까지 숫자 중 랜덤한 정수를 추가했습니다.

배열에서 중복되는 요소를 제거하는 함수 만들기

랜덤한 숫자를 요소로 추가했기 때문에, 값을 불러올 때 마다 배열의 요소가 달라지고 그 중에선 중복되는 값도 있습니다.
배열을 반복문으로 전달하면 요소를 나열할 수 있는데, 이 특징을 이용하면 중복되는 요소를 없애는 함수를 만들 수 있습니다.

func removeDuplicate (_ array: [Int]) -> [Int] {
    var removedArray = [Int]()
    for i in array {
        if removedArray.contains(i) == false {
            removedArray.append(i)
        }
    }
    return removedArray
}

파라미터를 [Int]로 받고 [Int]을 리턴하는 함수 removeDuplicate를 만들었습니다.
그리고 함수 안에 중복되지 않은 요소만 저장할 새로운 빈배열 removedArray를 만들어주고, 파라미터로 전달된 배열을 for in반복문을 사용해 요소를 나열했습니다.
반복문 내부에서 .append 메소드로 removedArray에 요소를 추가하기 전, removedArray에 같은 요소가 들어있다면, false로 평가되게 if문으로 조건을 주었습니다.
if문은 true일때만 실행이 되는데, 반복문에 전달된 요소가 이미 배열 안에 있는 요소와 같다면(중복된다면), if문은 실행되지 않고 다음 문장으로 제어를 전달합니다.
중복되지 않는다면, 요소를 추가합니다.
return 키워드를 사용해서 removedArray배열을 리턴해줍니다.

함수를 호출하고 파라미터로 (중복된 요소가 들어있는)배열을 전달하면, 중복된 요소가 제거된 배열이 리턴됩니다.
if조건문 링크

💡removedArray.contains(i) == false는, !(removedArray.contains(i)) 이렇게 작성할수도 있습니다.

Set

Set(집합)은 중복된 요소를 허용하지 않기 때문에, Set을 사용하면 쉽게 배열 안 중복 요소를 제거할 수 있습니다.

let removedDuplicate: Set = Set(randomArray)
Array(removedDuplicate)
profile
iOS개발자 꿈나무

0개의 댓글