누적합 2

[Programmers] 광고 삽입

누적합과 슬라이딩 윈도우를 이용하는 문제였다. 우선적으로 모든 시청자들의 시간을 배열에 누적해주었다. 그 다음 접근법을 고민해보았다. 이 문제 같은 경우 광고시간이 크기 N으로 고정이기 때문에 이것을 전체 배열길이에서 만큼 한칸씩 밀면서 움직여보며 답을 찾는 방법인 슬라이딩 윈도우를 적용시켜보았다. 기본적으로 아이디어는 맞았지만 문제를 풀면서 주의할점이 여러가지 있었다. 첫째, 시간을 초로 바꿔서 푸는 부분 둘째, 동영상 재생시간 = 재생 종료된 시간 - 재생 시작된 시간 이므로 재생종료시간을 포함 X 셋째, 슬라이딩 윈도우 크기 만큼의 배열 합 값이 int 범위를 넘어갈 수 있는 부분 위의 부분을 고려하여 반례들을 해결할 수 있었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16..

Algorithm 2021.06.05

[BOJ] 3020. 개똥벌레

누적합을 사용한 문제였다. 문제를 맨처음 봤을때 단순히 브루트포스로 접근하여 모든 라인에서 모든 장애물을 카운트하는 방식을 사용하려고 했으나, 최대 장애물의 수가 200,000개, 최대 라인의 수가 500,000이 나오게 됨으로 시간초과를 피할수 없을것같다는 생각이 들었다. 그래서 생각해본게 높이당 장애물의 수를 저장하고, 그것을 이용하여 높이당 넘어야할 장애물의 누적수를 구한다음 모든 높이(라인)에서 몇개의 장애물을 넘어야하는지 계산하였다. 다만 주의할점은 장애물이 위방향, 아래방향 두가지가 나오게 됨으로 나누어서 계산을하고 인덱스를 적절히 조정하여 높이(라인)에서 몇개의 장애물을 넘는지 구하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2..

Algorithm 2021.06.02