이번 강좌에서는 스위프트 프로그래밍 언어를 사용하여 평균을 구하는 알고리즘 문제를 해결해보겠습니다. 채용 코딩 테스트에서 자주 출제되는 이 문제는 데이터 처리의 기초를 다지기에 좋습니다. 아울러, 스위프트 기본 문법과 배열 처리 방법을 익힐 수 있는 기회가 될 것입니다.
문제 설명
다음과 같은 배열이 주어집니다. 이 배열의 모든 요소의 평균을 구하는 함수를 작성하세요. 배열의 요소는 정수입니다.
입력
- 정수 배열
numbers
가 주어진다. (1 ≤numbers.count
≤ 100, 0 ≤numbers[i]
≤ 1000)
출력
- 주어진 배열의 평균값을 소수점 첫째 자리에서 반올림하여 정수로 출력한다.
예제
출력: 70
출력: 90
문제 풀이 과정
1단계: 문제 이해하기
문제를 이해하기 위해서는 주어진 배열의 모든 요소를 더한 후, 요소의 개수로 나누어 평균을 구하면 된다는 점을 인식해야 합니다. 또한 평균을 소수점 첫째 자리에서 반올림하여 정수로 반환해야 한다는 요구 사항도 기억해야 합니다.
2단계: 입력 처리
스위프트에서는 배열을 쉽게 다룰 수 있는 다양한 메서드를 제공하므로, 입력된 배열을 그대로 사용할 수 있습니다. 예를 들어, 배열의 합계를 구할 때는 reduce
함수를 사용할 수 있습니다.
3단계: 알고리즘 구현
이제 실제로 대입할 알고리즘을 구현해 보겠습니다.
func average(numbers: [Int]) -> Int {
// 1. 배열의 요소의 총 합을 구한다.
let total = numbers.reduce(0, +)
// 2. 배열의 요소의 개수를 구한다.
let count = numbers.count
// 3. 평균을 계산하고 반올림한다.
let average = Double(total) / Double(count)
return Int(round(average))
}
4단계: 테스트 케이스 작성
작성한 함수를 토대로 몇 가지 테스트 케이스를 만들어 보겠습니다.
let test1 = average(numbers: [60, 82, 75, 90, 45]) // 70
let test2 = average(numbers: [100, 90, 80]) // 90
let test3 = average(numbers: [0, 0, 0, 0]) // 0
let test4 = average(numbers: [1, 2, 3, 4, 5, 6]) // 4
let test5 = average(numbers: [1, 2, 3]) // 2
5단계: 결과 확인 및 출력
테스트를 통해 결과를 출력해보겠습니다. 이를 위해 print
함수를 사용합니다.
print(test1) // 70
print(test2) // 90
print(test3) // 0
print(test4) // 4
print(test5) // 2
전체 코드
이제 모든 단계를 통합한 최종 코드를 소개합니다.
func average(numbers: [Int]) -> Int {
let total = numbers.reduce(0, +)
let count = numbers.count
let average = Double(total) / Double(count)
return Int(round(average))
}
// 테스트 케이스
let test1 = average(numbers: [60, 82, 75, 90, 45]) // 70
let test2 = average(numbers: [100, 90, 80]) // 90
let test3 = average(numbers: [0, 0, 0, 0]) // 0
let test4 = average(numbers: [1, 2, 3, 4, 5, 6]) // 4
let test5 = average(numbers: [1, 2, 3]) // 2
print(test1)
print(test2)
print(test3)
print(test4)
print(test5)
결론
이번 강좌를 통해 스위프트를 사용하여 평균을 구하는 알고리즘 문제를 해결하는 방법을 배웠습니다. 배열의 요소를 더하고, 평균을 계산하며, 소수점 반올림 결과를 출력하는 일련의 과정은 데이터 처리의 기초가 됩니다. 이러한 문제를 해결할 수 있는 능력은 취업 코딩 테스트에서 매우 중요하므로, 연습을 통해 능력을 더욱 강화하길 바랍니다.