본문 바로가기

알고리즘 풀이(JAVA)/leetcode

[leetcode] 2574. Left and Right Sum Differences (java)

<문제 2574. Left and Right Sum Differences>

[문제]

번역 :

[정수 배열 nums가 주어졌을 때, 정수 배열 answer을 구합니다
answer.length == nums.length 
answer[i] = |leftSum[i] - rightSum[i]| 입니다.

 

여기서
leftSum[i]는 배열 nums에서 인덱스 i의 왼쪽에 있는 요소의 합계입니다. 이러한 요소가 없으면 leftSum[i] = 0이 됩니다.
rightSum[i]는 배열 nums에서 인덱스 i의 오른쪽에 있는 요소의 합계입니다. 이러한 요소가 없으면 rightSum[i] = 0이 됩니다.
배열의 답을 반환합니다.]

 

→ 왼쪽 / 오른쪽의 배열을 구해서 | 왼쪽 배열 - 오른쪽 배열 | 을 구하는 문제

 

[답안]

import java.util.Arrays;

class Solution {
    public int[] leftRigthDifference(int[] nums) {
        int[] answer = new int[nums.length]; // answer 배열의 크기는 nums 배열의 크기와 같다
        int[] left = new int[nums.length]; // 왼쪽
        int[] right = new int[nums.length]; // 오른쪽

        int sum = 0; // 합을 구할 변수

        for (int i = 1; i < answer.length; i++) { // 왼쪽부터 구하기
            left[i] = sum + nums[i - 1];
            sum += nums[i - 1];
        }

        sum = 0; // 합계 값 초기화(왼쪽 구할 때 썼으니까)

        for (int i = nums.length - 2; i >= 0 ; i--) { // 오른쪽 구하기
            right[i] = sum + nums[i + 1];
            sum += nums[i + 1];
        }

        for (int i = 0; i < nums.length; i++) { // 최종 answer 구하기
            answer[i] = Math.abs(left[i] - right[i]); // 절댓값 씌우는 Math.abs사용
        }
        return answer;
    }
    public static void main(String[] args){
        Solution sol = new Solution();
        int[] nums = {10,4,8,3};
        int[] nums2 = {1};
        System.out.println(Arrays.toString(sol.leftRigthDifference(nums)));
        System.out.println(Arrays.toString(sol.leftRigthDifference(nums2)));
    }
}

출처

https://leetcode.com/problems/left-and-right-sum-differences/description/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com