프로그래머스 음양 더하기 (99클럽 코딩테스트 6일차 TIL)

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

목적

하루하루 코딩테스트를 풀어보니깐 생각보다 어려운 문제가 있고 그렇지 않은 문제가 있는것같다. 조금더 열심히 풀어서 가독성이 높은코드를 만들었으면 좋겠다.

문제

absolutes 배열과 signs 배열의 길이가 같다고 문제에서 주어졌기 때문에, 인덱스를 맞춰가면서 값을 처리할 수 있다고 생각됐습니다. 또한 signs 배열의 값에 따라 absolutes의 양수를 음수로 만들어 주면 실제 값을 구할 수 있게구나라고 생각이 들었어요. 그리고 한 번의 순회로 문제를 풀 수 있어 시간 복잡도를 O(N)으로 줄일 수 있었습니다.

장점은
입력 데이터의 크기에 비례하는 선형 시간만 소요되어 효율적이다. 입력 데이터가 커져도 알고리즘 성능이 급격히 떨어지지 않는다.

단점은
입력 데이터가 매우 커지면(예: 백만 개) 여전히 수행 시간이 오래 걸릴 수 있다. 추가 메모리 사용을 위한 공간 복잡도가 O(N)이 필요하다.

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        for(int i=0; i<absolutes.length; i++) {
            if(!signs[i]) {
                absolutes[i] = -absolutes[i]; 
            }
            answer += absolutes[i];
        }
        return answer;
    } 
}

다행이 이번에는 그렇게 어렵지 않게 통과할 수 있었던것같다.

마무리

이번에는 의사코드를 사용하지 않았는데 다음부터 다시 사용해봐야할것같다.

profile
Junior backend developer

0개의 댓글