본문 바로가기

코딩테스트

[프로그래머스] '내적' 문제풀이

길이가 같은 두 배열이 주어지면, 

각 배열의 i번째 요소들을 각각 곱해서 다 더해주는 문제이다. 

 

주어진 문제는 다음과 같다. 

[길이가 같은 두 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의 길이)]

 

아래에는 내가 풀었던 문제의 정답이다. 

C =list()
def solution(a, b):
    for one,two in zip(a,b):
        C.append(one*two)
    answer = sum(C)
    return answer

 

 

문제를 보며 내가 생각한 문제에 대한 접근법은 다음과 같다. 

 

1)우선, 각 배열의 요소들을 더해서 넣어두는 새로운 배열을 만들어야겠다. 

-> C = list()

-> 여기에 각각의 요소들을 곱한 값을 순서대로 넣어야겠다. 

 

2)하나의 배열 안에 있는 모든 요소를 합해주는 함수가 존재할까? 

-> 검색해보니 sum()이라는 함수가 존재했다. 

-> answer에 sum(C)를 넣었다. 

 

3)그렇다면 두개의 배열을 하나의 for으로 돌리는 것이 가능할까? 

-> 검색해보니 zip이라는 함수가 있었다. ex)  for A,B in zip(a,b) 라는 형식으로 가능하다. 

-> 그래서 나는 변수를 one,two로 각각 선언한 다음 for one,two in zip(a,b)로 for문을 작성했다. 

 

4)두 배열의 요소들을 순서대로 각각 곱한 후에 C라는 리스트에 넣자. 

-> for one,two in zip(a,b):
        C.append(one*two)

 

5)마지막으로 C리스트에 들어가 있는 모든 요소들을 합해서 answer에 넣자. 

-> answer = sum(C)

     return answer