프로그래머스 내적 (99클럽 코딩테스트 21일차 TIL)

KIMYEONGJUN·2024년 4월 17일
0
post-thumbnail

목표

오늘 문제를 많이 풀어서 다음에 또 이런 문제 유형이 나왔을때 맞추는게 목표이다.

문제

내가 생각했을때 문제에서 원하는부분

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어진다.
a와 b의 내적을 return 하도록 solution 함수 완성
이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1]이다.

내가 이 문제를 보고 생각해본 부분

a와 b 배열의 길이가 같다는 점에 착안하여 같은 인덱스끼리 곱한 후 더하는 아이디어를 떠올렸다.
for문을 사용하여 배열의 원소를 순회하는 방법을 생각해봤다.

코드로 구현

class Solution {
    public int solution(int[] a, int[] b) {
        int answer = 0;
        
        for (int i = 0; i < a.length; i++) {
            answer += a[i] * b[i];
        }
        return answer;
    }
}

시간복잡도는 O(N)

장점
입력 데이터의 크기에 따라 알고리즘의 수행 시간이 선형적으로 증가한다.
데이터 크기가 커져도 수행 시간이 급격히 늘어나지 않아 효율적이다.

단점
데이터 크기가 매우 커지면 연산 횟수가 기하급수적으로 늘어나 시간이 오래 걸릴 수 있다.
병렬 처리가 어렵다.

마무리

오늘 문제를 간단하게 풀어봤는데 어제보다는 조금 푸는 시간이 단축된것같다. 어렵게 생각하지말고 간단하게 생각하면 바로 풀리는 문제였던것같다. 효율적인 면에서는 아직 잘모르겠다.

profile
Junior backend developer

0개의 댓글