dolmul5000   5년 전

피자 A에서 양을 채우는 경우 + 피자 B에서 양을 채우는 경우 + (A 덩어리 + B 덩어리) 이렇게 나눠서 생각을 하여 

A부분과 B부분에서 연속되는 피자조각을 구하는데 계속 중복입니다.

제가 접근한 방식은 투 포인터 알고리즘을 이용하는 건데, 찾는 수가 나오면 ++ans를 하고 합이 작은 경우에는 0이 아니면 AC배열에

합을 기록하고 있습니다. B에서는 BC배열에 기록하고요.


피자 조각의 크기를 담아둔 배열에서는 s <= e 구간만 세어주는 것 같아서 (이 방식에서는 배열의 끝 부분과 시작부분을 같이 인식을 못하지 않나요?)

e 가 마지막 요소 + 1에 도달한 경우에 true값을 준 후에 e를 0으로 만듭니다. 이때 s 에서부터 시작한 구간합을 e까지 세고 있어요.

그러다가 합이 너무 커져서 s부분을 넘길 때 이 s가 다시 0지점으로 가려고 한다면, 이후부터 나오는 것은 중복이라고 생각하고 break

근데 문제는 피자 조각이 3개 원하는 수가 3.

1 1 1 이라고 하면, s = 0이고 e = 0 (true상태) 에서 한 번을 센 후에도

s = 1 e = 1 일때 또 세고, s = 2 e = 2일때 또 세다가 s = 0일때야 break가 걸려서 여기서만 3번을 세는데....

어느 부분이 틀리고, 어떤 방식으로 풀어야할지 잘 모르겠어요..

5 3 3 

1 2 3 

5 1 6

 AC START 1 3 3 4 

 BC START 1

ans 3 

댓글을 작성하려면 로그인해야 합니다.