안녕하세요! 오늘은 스위프트를 사용한 코딩 테스트에서 자주 등장하는 집합(셋) 문제를 다뤄보겠습니다. 집합은 중복되지 않는 요소를 모은 자료구조로, 다양한 문제에서 유용하게 사용됩니다. 이번 강좌에서는 집합을 표현하고, 이를 활용한 문제를 통해 알고리즘적 사고를 키워보겠습니다.
문제 설명
주어진 정수 배열에서 서로 다른 모든 숫자를 집합 형태로 리턴하는 함수를 작성하세요. 즉, 입력 배열에 포함된 중복 숫자는 제거하고, unique한 숫자들로 이루어진 집합을 반환해야 합니다.
문제 예시
입력: [1, 2, 2, 3, 4, 4, 5]
출력: [1, 2, 3, 4, 5]
제한 사항
- 입력 배열의 길이는 1 이상 10,000 이하입니다.
- 숫자는 -1,000,000 이상 1,000,000 이하입니다.
알고리즘 접근 방법
이 문제는 다음과 같은 간단한 접근 방법으로 해결할 수 있습니다:
- 입력된 배열을 수집하여 중복을 제거하기 위해 스위프트의 집합(Set)을 활용합니다.
- Set에 배열의 요소들을 추가합니다. Set은 자동으로 중복된 값을 허용하지 않으므로, 모든 중복이 제거됩니다.
- 마지막으로 Set을 배열로 변환하여 결과를 반환합니다.
스위프트 코드 구현
아래는 문제를 해결하기 위한 스위프트 코드입니다:
func uniqueElements(from array: [Int]) -> [Int] {
let uniqueSet = Set(array)
return Array(uniqueSet)
}
let inputArray = [1, 2, 2, 3, 4, 4, 5]
let result = uniqueElements(from: inputArray)
print(result) // [2, 3, 4, 5, 1]
코드 설명
위의 코드를 자세히 살펴보겠습니다:
- 함수
uniqueElements(from:)
을 정의합니다. 이 함수는 정수 배열을 입력받아 고유한 요소들로 이루어진 배열을 반환합니다. Set(array)
를 호출하여 입력 배열의 모든 요소를 집합에 추가합니다. 이 과정에서 Set의 특성상 중복 요소는 자동으로 제거됩니다.Array(uniqueSet)
를 통해 Set을 다시 배열로 변환합니다. 최종 결과는 유형이 서로 다른 요소로 이루어진 배열이 됩니다.
테스트 케이스
다양한 입력값에 대해 위의 함수를 테스트하여 올바른 동작을 확인할 수 있습니다:
print(uniqueElements(from: [1, 1, 1, 1])) // [1]
print(uniqueElements(from: [1, 2, 3, 3, 3, 2, 1])) // [1, 2, 3]
print(uniqueElements(from: [])) // []
결론
이번 강좌에서 스위프트의 집합을 활용하여 중복된 요소를 제거하는 문제를 해결하는 방법을 배웠습니다. 집합은 코드의 간결함을 높여 주고, 중복된 데이터를 효율적으로 처리할 수 있게 도와줍니다. 다양한 코딩 테스트 문제에서 집합을 활용하는 연습을 통해 더 나은 프로그래머가 되어 보시길 바랍니다. 감사합니다!