티스토리 뷰

반응형

 

 

 


프로그래머스 레벨1 문제, 내적 문제설명

프로그래머스 레벨1문제, 내적문제는 동등한 크기의 배열 두개(a, b)가 주어졌을때 a, b의 내적을 구하는 문제입니다. 배열 동일위치 값을 각각 곱한 후 이들의 합을 구하는 간단한 문제입니다. 문제 설명대로 풀면 됩니다.

 

 

 

 

입출력 예 1번만 보겠습니다. a, b가 주어졌을때 반환할 값은 1 * -3 + 2 * -1 + 3 * 0 + 4 * 2 => 3이 됩니다. 해당 문제는 다양한 방식으로 풀수 있겠습니다. 저는 reduce를 사용해서 3줄, 1줄 버전으로 문제를 풀어보겠습니다. 

 

 

 


프로그래머스 레벨1, 내적 swift 문제풀이
reduce(into:) 함수로 내적 구하기

reduce를 사용해서 작성해본 코드입니다. a의 계수가능범위를 indices로 반환받고, 그 계수가능범위에 reduce를 접근하고 있습니다. 이를 통해 reduce 클로져에서 0 ..< a.count의 범위를 순회하게 됩니다. 순회를 하면서 각각의 인덱스에 맞는 연산을 3행에서 수행하게 됩니다. 누적합 결과는 result에 저장되게 되며 최종 결과, result(내적)를 반환하는 코드입니다. 

 

위의 코드는 3줄로 풀었죠? 더 간단하게 1줄로 표현할 수도 있습니다. 바로 위 reduce 클로져 내부의 첫번째, 두번째 인자인 ressult, idx 인자를 $0, $1로 표현하면 됩니다. 

 

 

 

 

위와 같이 (result, idx) in 을 사용하지 않고, $0, $1를 사용해서 더욱 간단하게 코드를 작성할 수 있습니다. 뭐가 더 좋은 방법일가요?? 코드 상황에 따라 달라질거라 생각합니다. 이와 같이 다양한 방법으로 표현할 수 있다는 점을 알아두면 좋을 것 같습니다. 

 

앞서 말했듯이, reduce를 사용하는것이 정도는 아닙니다. 따로 변수를 두고, forEach나 for-in 루프 등으로 변수에 누적합을 저장하고 반환할수도 있겠죠. reduce를 다양한 형태로 사용해서 문제를 풀 수 있다는 점 알고 가시면 되겠습니다.

 

아래는 해당 코드의 제출 결과 및 전체 코드입니다. 질문 및 의견 환영합니다. 😁

 

 

 

 

 


 

 

 


내적 swift reduce(into:)풀이 전체코드

func solution(_ a: [Int], _ b: [Int]) -> Int {
    return (a.indices).reduce(into: 0) { $0 += a[$1] * b[$1] }
}

 

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함