728x90
1480. Running Sum of 1d Array
배열 속 숫자들을 누적시키며 합을 구하는 문제이다.
class Solution {
public int[] runningSum(int[] nums) {
int[] answer = new int[nums.length];
int sum = 0;
for (int i = 0; i < nums.length; i++) {
int temp = nums[i];
sum += temp;
answer[i] = sum;
}
return answer;
}
}
문제 풀이
- 정답의 배열 크기는 nums의 크기와 같다.
- 합을 나타내는 sum 변수를 0으로 초기화 해준다.
- nums의 배열 크기만큼 반복문을 돌고, temp라는 변수를 nums의 각 자리의 수로 할당해준다.
- sum변수에 temp를 누적으로 더해주고, 정답 배열의 각 자리의 수를 sum으로 할당한다.
724. Find Pivot Index
![](https://blog.kakaocdn.net/dn/bGz7ok/btsbk6htuSY/GIe31otc5Rde8hJEvuaPL1/img.png)
쉽게 말하면, 배열의 요소 중 한 요소를 기점으로 양 옆의 숫자를 더했을 때 같은 지점이 있는지 물어보는 문제이다.
없다면 -1을 반환한다.
class Solution {
public int pivotIndex(int[] nums) {
int totalSum = Arrays.stream(nums).sum();
int leftSum = 0;
int pivot = 0;
for (int i = 0; i < nums.length; i++) {
pivot = i;
totalSum -= nums[i];
if (totalSum == leftSum) {
return pivot;
}
leftSum += nums[i];
}
return -1;
}
}
문제 풀이
- 주어진 배열의 모든 값의 합을 totalSum으로 할당
- 합이 같은지 비교해줄 leftSum도 0으로 초기화
- 하나의 포인터(pivot)을 0번째 인덱스 기준으로 잡고, 해당 피봇을 오른쪽으로 이동하며 totalSum에서 뺀다.
- totalSum에서 leftSum(비교군)이 같으면 그 지점이 정답의 인덱스
- 4번을 만족하지 않는다면, 합을 같게 해주는 구간을 찾기 위해 leftSum(비교군)에 해당 요소를 누적시켜 더해준다.
'알고리즘' 카테고리의 다른 글
알고리즘 BigO 간단 정리 (1) | 2024.01.07 |
---|---|
[Day5/75] LeetCode 75 (0) | 2023.04.24 |
[Day4/75] LeetCode 75 (0) | 2023.04.21 |
[Day3/75] LeetCode 75 (0) | 2023.04.20 |
[Day2/75] LeetCode 75 (0) | 2023.04.19 |