방에 n개의 전구가 있다고 가정하고 이 전구의 번호는 0에서 n-1까지입니다. 우리는 그것들을 왼쪽에서 오른쪽으로 일렬로 배열해야 합니다. 처음에는 모든 전구가 꺼집니다(0 상태). i번째 전구가 켜져 있으면 t[i]가 '1'이고 꺼져 있으면 '0'인 지정된 대상 배열 't'로 표시되는 구성을 가져와야 합니다. 전구의 상태를 뒤집는 스위치도 있습니다. 그리고 뒤집기 연산은 다음과 같이 정의됩니다 -
-
전구 색인 i를 선택하십시오.
-
각 전구를 인덱스 i에서 인덱스 n - 1로 뒤집습니다.
목표를 형성하는 데 필요한 최소 뒤집기 횟수를 찾아야 합니다.
따라서 입력이 t ="0101"과 같으면 출력은 3이되고 두 번째 전구에서 시작하면 다음 구성은 "0111"이되고 세 번째 구성에서는 "0100"이되고 마지막으로 뒤집습니다. 전구를 사용하여 "0101"로 만듭니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
개수 :=0
-
x :='0'
-
t의 각 i에 대해 수행
-
i가 x와 같지 않으면
-
개수 :=개수 + 1
-
x :=나는
-
-
-
반환 횟수
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(t):count =0 x ='0' for i in t:if i !=x:count +=1 x =i return countt ="0101"print(solve(t))사전>입력
"0101"출력
3