250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 JS)쿠키 구입 본문
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/49995?language=javascript
어느 한 중앙을 기준으로 왼쪽, 오른쪽의 쿠키 개수를 더해 형제가 공평하게 쿠키를 최대한으로 가질 수 있도록 한다.
for문으로 1 ~ cookie.length 까지 반복한다.
왼쪽에 있는 첫째는 mid - 1 ~ 0 까지의 인덱스를 가지고,
오른쪽에 있는 둘째는 mid ~ cookie.length 까지의 인덱스를 가진다.
각 형제의 쿠키를 leftSum, rightSum으로 정하고 쿠키를 시작 지점에서 더해준다.
만약 두 값이 같다면 answer와 leftSum(or rightSum) 중에 큰 값을 answer에 넣어준다.
while문으로 쿠키를 더해주자.
leftStart의 인덱스가 0 이상이고 leftSum <= rightSum 이라면
왼쪽에 있는 쿠키를 더해준다.
만약 rightStart의 인덱스가 cookie.length보다 작고 rightSum <= leftSum이라면
오른쪽에 있는 쿠키를 더해준다.
이 두 사항이 아니라면 flag = false로 하여 다음 반복이 이뤄지지 않도록 한다.
마지막은 두 값이 동일한지 확인하여 answer와 leftSum(or rightSum) 중 큰 값을 answer에 넣어준다.
function solution(cookie) {
const length = cookie.length;
let answer = 0;
for(let mid = 1; mid < length; mid++){
let leftStart = mid - 1;
let rightStart = mid;
let leftSum = cookie[leftStart--];
let rightSum = cookie[rightStart++];
let keep = true;
if(leftSum === rightSum){
answer = Math.max(answer, rightSum);
}
while(keep){
if(leftStart >= 0 && leftSum <= rightSum){
leftSum += cookie[leftStart--];
} else if(rightStart < length && rightSum <= leftSum){
rightSum += cookie[rightStart++];
} else{
keep = false;
}
if(leftSum === rightSum){
answer = Math.max(answer, rightSum);
}
}
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > 4단계' 카테고리의 다른 글
(프로그래머스 JS)지형 편집 (0) | 2022.08.07 |
---|