2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift] Programmers - 내적

2024. 3. 13. 11:44ㆍIOS/Swift-Algorithm (Programmers)
SMALL

https://school.programmers.co.kr/learn/courses/30/lessons/70128

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

* 내적 *

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다.

a와 b의 내적을 return 하도록 solution 함수를 완성하라.

이때, a b 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n a, b 길이)

* 제한사항 *

a, b의 길이는 1 이상 1,000 이하

a, b 모든 수는 -1,000 이상 1,000 이하

 

* 알고리즘 분석과 이해 *

내적은 선형 대수학에서 두 벡터의 곱셈에 대한 개념이죠,

주어진 두 벡터를 곱한 후 그 결과를 모두 더하는 연산을 의미

간단하게 주어진 두 배열의 각 원소를 곱한 후 그 결과를 모두 + 하면 될 것 같습니다.

단, 배열의 길이가 최대 1,000이므로 매우 큰 입력에도 동작해야 해요.

 

* 로직구상 *

먼저, 배열의 길이가 같으므로 반복문(for-in)을 사용하여

같은 인덱스의 원소를 순회하면서 연산해주도록 하고,

내적의 핵심 내용으로 각 배열의 같은 인덱스에 있는

원소들을 곱하여 결과를 + 해주어야 하고,

주어진 배열의 최대 길이가 1,000이므로 선형 시간복잡도를 가진

알고리즘을 사용하는 방식으로 접근하면 좋을 것 같습니다.

* 코드구성 *

func solution(_ a: [Int], _ b: [Int]) -> Int {

 

먼저, 함수를 정의해줍시다.

두 개의 정수 배열을 받아서 내적을 계산하여 반환 하고 함수 이름은 "solution"이며,

입력으로 두 개의 정수 배열 "a"와 "b"를 받고,

반환 값으로는 정수형을 반환하도록 해줍시다.

    var result = 0 // 내적을 저장할 변수

내적을 저장할 변수 "result"를 선언하고 0으로 초기화 시켜줍시다.

 

    for i in 0..<a.count {

반복문을 통해 배열의 인덱스를 순회시켜줍시다.

0..<a.count는 배열 "a"의 인덱스 범위를 나타냅니다.

 

        result += a[i] * b[i] // 각 배열의 같은 인덱스에 있는 원소를 곱하여 result에 더합니다.
            }
    return result // 최종적으로 계산된 내적을 반환합니다.
}

각 배열의 같은 인덱스에 있는 원소를 곱하여 "result"에 더합니다.

반복문이 끝나고 계산된 내적 "result"를 반환해 주도록 합니다.

 

* 전체 코드 구성 *

import Foundation

func solution(_ a: [Int], _ b: [Int]) -> Int {
    var result = 0 // 내적을 저장할 변수

    // 배열 a와 b의 길이가 같으므로 반복문은 한 번만 사용합니다.
    for i in 0..<a.count {
        result += a[i] * b[i] // 각 배열의 같은 인덱스에 있는 원소를 곱하여 result에 더합니다.
    }

    return result // 최종적으로 계산된 내적을 반환합니다.
}
728x90