ACM준비/Programmers

쿠키 구입

조규현15 2023. 1. 9. 23:30
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/49995

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

전체 쿠키를 순회하며 O ( n )

index ( m ) 를 기준으로 좌우에 최대 쿠키를 구합니다.

현재 기준 ( m ) 으로 부터 index ( left, right ) 를 움직이며 최대 쿠키를 찾습니다 O ( n )
현재 쿠키가 같더라도 더 이상 움직일 index 가 없을 때까지 순회하여 전체 쿠키에서
가장 큰 쿠키를 구합니다.

총 O ( n^2 ) 에서 해결됩니다.

function solution (cookie) {
  const num_total_cookie = cookie.length;
  // default : 0
  let max_cookie = 0;

  for (let m = 0; m < num_total_cookie - 1; m++) {
    let l = m;
    let r = m + 1;
    let sum_left = cookie[l];
    let sum_right = cookie[r];

    while (true) {
      // 값이 같으면 성공 ( 최대 값 갱신 )
      if(sum_left == sum_right && sum_left > max_cookie) {
        max_cookie = sum_left;
      }
      // 오른쪽이 작으면 오른쪽으로 index 를 보내서 쿠키를 추가함
      else if(sum_left >= sum_right && r < num_total_cookie - 1) {
        sum_right += cookie[++r];
      }
      // 왼쪽이 작으면 왼쪽으로 index 를 보내서 쿠키를 추가함
      else if(sum_left <= sum_right && l > 0) {
        sum_left += cookie[--l];
      } else {
      // 더 이상 움직일 index 가 없으면 종료
        break;
      }
    }
  }

  return max_cookie;
}
반응형

'ACM준비 > Programmers' 카테고리의 다른 글

개인정보 수집 유효기간  (0) 2023.05.10
올바른 괄호의 갯수  (0) 2023.01.09
자동완성  (0) 2022.12.12
무지의 먹방 라이브  (0) 2022.12.12
호텔 방 배정  (0) 2022.12.03