조급하면 모래성이 될뿐

2018 윈터코딩 쿠키 구입 본문

Algorithm

2018 윈터코딩 쿠키 구입

Pawer0223 2019. 10. 25. 15:13

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/49995

 

코딩테스트 연습 - 쿠키 구입 | 프로그래머스

과자를 바구니 단위로 파는 가게가 있습니다. 이 가게는 1번부터 N번까지 차례로 번호가 붙은 바구니 N개가 일렬로 나열해 놨습니다. 철수는 두 아들에게 줄 과자를 사려합니다. 첫째 아들에게는 l번 바구니부터 m번 바구니까지, 둘째 아들에게는 m+1번 바구니부터 r번 바구니까지를 주려합니다. 단, 두 아들이 받을 과자 수는 같아야 합니다(1 <= l <= m, m+1 <= r <= N). 즉, A[i] 를 i번 바구니에 들어있는 과자 수라고 했을 때, A[

programmers.co.kr

나의 풀이

첫째는 l ~ m 까지 둘째는 m+1 ~ r 까지의 범위에서 과자를 받을 수 있다.

 

여기서 주목할 것은 형은 m에서 끝나고, 동생은 m+1에서 시작한다는 것이다.

 

** 결국 형은 m부터 최대 첫번째까지 받을 수 있고,동생은 m+1부터 최대 마지막번까지 받을 수 있다.

 

순서대로 위의 식(**)을 적용하여 max값을 구해 갈 것이다.

 

예를들어 [ 1,1,11,11,2 ]가 입력받았다면 아래처럼 처리되는 것이다.

형의 index 동생의 index 형의 값 동생의 값 max
0 1 1 1 1
1 2 1 11 1
0 2 2 11 1
2 3 11 11 11
1 3 12 11 11
1 4 12 13 11
0 4 13 13 13

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package Programmers;
 
public class BuyCookie {
 
    public static void main(String[] args) {
 
        int[] cookie = {
                1,1,11,11,2
        };
 
        int answer = solution(cookie);
 
        System.out.println(answer);
 
    }//main
 
    public static int solution(int[] cookie) {
        
        int answer = 0;
        
        // cookie전체 보기
        for ( int i = 0 ; i < cookie.length-1; i++ ) {
            
            // i를 기준으로 이전 값을 더해간다.
            int cur  = i   ;
            int curSum = cookie[cur] ;
            // i+1을 기준으로 이후 값을 더해간다.
            int next = i+1 ;
            int nextSum = cookie[next];
            
            while ( true ) {
                
                if ( curSum == nextSum ) {
                    answer = Math.max( answer, curSum );
                }
                
                if ( curSum <= nextSum && cur > 0 ) {
                    cur--;
                    curSum += cookie[cur];
                }else if ( nextSum <= curSum && next < cookie.length-1 ) {
                    next++;
                    nextSum += cookie[next];
                }else break;
            }
        }
 
        return answer;
    }
 
 
}//class
 
cs

제출 결과

 

반응형

'Algorithm' 카테고리의 다른 글

2018 윈터코딩 방문 길이  (0) 2019.10.24
2018 윈터코딩 스킬트리  (0) 2019.10.24
[백준] 1966 프린터 큐  (0) 2019.10.15
프렌즈4블록  (0) 2019.08.22