정확히 K개 연속 전구를 뒤집는 버튼으로 모든 전구를 끄는 최소 횟수를 구하고 불가능하면 Insomnia를 출력합니다.
보통5그리디슬라이딩 윈도우면접 대비아직 제출이 없습니다시간 제한1초메모리 제한256 MB불면의 밤을 지새워 본 사람은 잠 못 드는 시간이 얼마나 괴로운지 안다. 잠을 자지 못하면 다음 날 피로가 쌓이고 생활 전반이 무너진다. 그래서 숙면을 신의 축복이라고 부르기도 한다.
인하대학교의 잠마니 박사는 숙면을 취하는 조건을 몇 가지 제시했다. 그중 첫 번째가 침대 주변을 어둡게 하는 것이다.
극심한 불면증에 시달리던 준형이는 이 조건을 지켜 건강을 되찾았다. 여행을 갈 만큼 몸이 나아지자 기념으로 특별한 숙소를 예약했는데, 도착해 보니 그곳에는 정말로 특별한 전구가 있었다.
전구 N개가 일렬로 놓여 있고 각 전구는 꺼져 있거나 켜져 있다. 준형이는 전구를 모두 끄고 싶지만 전구를 하나씩 조작하는 스위치는 없다. 버튼이 하나 있을 뿐이고, 이 버튼은 정확히 연속된 K개 전구의 상태를 한꺼번에 반전시킨다. 상태를 반전시킨다는 것은 꺼져 있던 전구를 켜고 켜져 있던 전구를 끄는 것이다.
준형이는 버튼을 최소한으로 눌러 전구를 모두 끄려고 한다. 준형이를 도와 최소 조작 횟수를 구하는 프로그램을 작성하자.
N=6, K=3이고 전구의 상태가 1 1 0 0 0 1인 경우를 보자. 1번부터 3번 전구를 반전시키면 0 0 1 0 0 1이 되고, 3번부터 5번 전구를 반전시키면 0 0 0 1 1 1이 되며, 4번부터 6번 전구를 반전시키면 모든 전구가 꺼진다. 두 번 이하로 눌러서 모두 끄는 방법은 없으므로 이때의 답은 3이다.
첫째 줄에 전구의 개수 N(1≤N≤100,000)과 버튼 한 번으로 상태가 반전되는 전구의 개수 K(1≤K≤N)가 주어진다.
둘째 줄에 N개의 정수 S1,S2,…,SN이 공백으로 구분되어 주어진다. Si는 i번째 전구의 상태이며, 1은 켜져 있음을, 0은 꺼져 있음을 뜻한다.
전구를 모두 끄는 데 필요한 최소 버튼 조작 횟수를 출력한다. 버튼 한 번은 정확히 연속된 K개 전구의 상태만 반전시킨다는 점에 유의한다.
어떤 방법으로도 전구를 모두 끌 수 없으면 따옴표 없이 Insomnia를 출력한다.