오늘 푼 문제
평균 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/12944
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
두 개 뽑아서 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/68644
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 코드
평균 구하기
func solution(_ arr:[Int]) -> Double {
var arrCount: Int = arr.count
var sum: Int = 0
for number in arr {
sum += number
}
// 리턴값 타입이 Double 이므로, sum, arrCount 를 Double 형으로 각각 변환하여 평균값 계산
return Double(sum) / Double(arrCount)
}
그런데 Swift 에서는 배열의 합을 구하기 위해 반복문이 아니라 'reduce' 메서드를 사용할 수도 있다. 그리고 나서 배열의 'count' 프로퍼티를 이용해 평균값을 계산할 수 있다.
func solution(_ arr:[Int]) -> Double {
let sum = arr.reduce(0, +)
return Double(sum) / Double(arr.count)
}
arr.reduce(0, +) 은 arr 배열의 모든 원소를 순회하여 누적 합계를 구하는 메서드다.
첫 번째 인자 0은 누적합의 시작값을, 두 번째 인자 +는 누적할 연산을 나타낸다.
즉, 배열의 모든 원소를 시작값 0부터 순서대로 더해 합계를 구하는 것이다.
두 개 뽑아서 더하기
func solution(_ numbers:[Int]) -> [Int] {
var result = Set<Int>()
for i in 0..<numbers.count {
for j in i+1..<numbers.count {
result.insert(numbers[i] + numbers[j])
}
}
return result.sorted()
}
Set<Int>() 를 사용하여 중복 없는 결과를 저장하도록 하였다.
이중 반복문을 사용하여 배열 내 가능한 두 수의 조합을 계산하여, 이를 result에 insert 하였다.
마지막으로 result 세트를 배열로 변환하여 'sorted()' 메서드로 오름차순으로 정렬하여 반환하였다.
느낀점
반복문으로 충분히 풀 수 있는 문제지만, reduce 와 같은 메서드를 사용함으로써 코드를 더 간결하게 쓸 수 있다.
두 번째 문제의 경우, 두 수의 조합을 구하기 고려하기 위하여 이중 반복문을 구현할 수 있다면 쉽게 풀 수 있는 문제였다.