반응형
문제
배열의 개수가 홀수 일 때만 그 안에 값들을 더하는 문제다.
현재 풀이
/**
* @param {number[]} arr
* @return {number}
*/
var sumOddLengthSubarrays = function(arr) {
let sum = 0
for(let i = 0; i < arr.length; i++){
for(let j = i; j <=arr.length; j++){
let newArr = arr.slice(i,j)
if(newArr.length %2 === 1){
console.log('newArr',newArr)
for(let i of newArr){
sum+=i
}
}
newArr = [];
}
}
return sum
};
풀이하는 데 40분정도 걸렸다. 일단 문제 접근에 대한 방향성이 떠오르지 않아서 꽤 고민했고, 힌트를 보고 나서 방향을 잡았지만, slice함수 인자에 대한 이해도가 부족해 더 오래 걸렸다. 결국 함수 사용법만 제대로 파악했어도.... 사용하기 전에 MDN을 잘 읽고 사용하자 ㅠㅠ
그래도 교훈을 하나 배웠다.
end는 미포함 !!! 기억하자
예전 풀이
var sumOddLengthSubarrays = function(arr) {
const odd = [];
let count = 0;
for(let i =0; i < arr.length; i++){
for(let j = i; j < arr.length; j++){
odd.push(arr[j]);
console.log(odd)
if(odd.length % 2 !== 0){
for(let val of odd ){
count+=val;
}
}
}
odd.length = 0;
}
return count
};
예전에 풀었을 때는 push를 사용해서 풀었네요 ㅋㅋㅋ
다른 사람 풀이
var sumOddLengthSubarrays = function(arr) {
let count=0;
for(let i=0;i<arr.length;i++){ // helping in selecting the starting point
for(let j=i;j<arr.length;j++){ // helping in selecting the endpoint point
if((i-j)%2==0){ // so that it only count the subarrays which have odd length
for(let k=i;k<=j;k++){ // looping from start point to end point and adding them
count+=arr[k];
}
}
}
}
return count;
};
이 풀이보다 더 인기 좋은 풀이가 있었지만, 이해가 안 가서 내가 이해할 수 있는 풀이를 가져왔다. 내가 처음에 접근했던 풀이 방식과 같은데 왜 나는 이 생각을 하지 못했을까 ㅋㅋㅠㅠ 기죽지 마라 재현아
결과
반응형
'LeetCode' 카테고리의 다른 글
1688. Count of Matches in Tournament (0) | 2022.06.21 |
---|---|
1791. Find Center of Star Graph (0) | 2022.06.13 |
1773. Count Items Matching a Rule (0) | 2022.06.13 |
1859. Sorting the Sentence (0) | 2022.06.12 |
1221. Split a String in Balanced Strings (0) | 2022.06.10 |
댓글