https://www.acmicpc.net/problem/15729
버튼을 누르면 오른쪽 2번째 까지 같이 눌리는 시스템이다.
버튼을 최소로 누르면서 결과값을 맞춰야하기 때문에 그리디적으로 접근을 해야했고 직접 몇개 그려서 보니까
i번째 버튼을 누르면 i를 포함해서 그전에 있는 버튼은 다시 누를 필요가 절때 없다.(그리디)
따라서 for를 n의 크기만큼 탐색하면서 temp = [0] * n 을 하나 만들고 똑같이 만들어질 때 까지 cnt를 늘리면 되는 문제다.
n = int(input())
data = list(map(int,input().split()))
temp = [0] * n
res = 0
for i in range(n):
if data[i] != temp[i]:
res += 1
temp[i] = not temp[i]
if i+1 < n:
temp[i+1] = not temp[i+1]
if i+2 < n:
temp[i+2] = not temp[i+2]
print(res)
'Algorithm > Algorithm Problem' 카테고리의 다른 글
백준 16943 숫자 재배치(순열, 구현) (0) | 2022.06.03 |
---|---|
백준 1911 흙길 보수하기(구현,그리디) (0) | 2022.06.03 |
백준 2072 오목(구현) (0) | 2022.06.01 |
백준 11000 강의실 배정(Heap, 우선순위 큐) (0) | 2022.05.22 |
백준 13900 순서쌍의 곱의 합(구현) (0) | 2022.05.20 |