https://howudong.tistory.com/93#article-1--%EB%AC%B8%EC%A0%9C-%EC%9D%B4%ED%95%B4-%EB%8B%A8%EA%B3%84
https://astrid-dm.tistory.com/429
: 최소값을 구하는 문제이고, 뺑뺑이를 돌리기 보다 구현하면 될 듯하다.
-> 그리디 인가?? 명제를 만들자.
: i번 전구가 다르면 2개의 경우가 있다.
i번 스위치를 누르거나, i + 1번 스위치를 누르거나.
1) i가 다르면 i번 스위치를 눌러서 i번 전구 동일하게 하는 경우가 있다. 그런데 이때는 i+1 번 전구도 변경된다.
그런데 i + 1번 전구 입장에서는 아니 나를 왜 뒤집어! i번 누르기 전에 나는 동일했다고 !!!
그래서 어쩔수 없이 i + 1번도 다르기 때문에 i + 2번 스위치를 눌러야 한다.
그런데 i + 2번 스위치를 누르고 싶은데 i + 2번은 동일하다...
->>> 느낀 점 : 오잉???!!
: 지금 이렇게 진행하는 것은 답을 구할 수 없는 시퀀스이다.
나를 기준으로 해서 다음 전구에 영향을 준다.
-> 그리고 이런식으로 하면 i번 뒤집었다가 i+1이 일치하지 않아서 i+1번을 누르게 되는 상황이 오면 최소값이 아니게 된다.
2) i가 다르면 i + 1번 스위치를 눌러서 i번과 i+1 번을 전구 변경할 수 있다.
그런데 i + 1번 전구가 다르다. 그럼 i + 2번 스위치를 누르면 된다. (i + 1번 전구가 다르지 않다면 i + 1전구 누르지 않아도 된다.)
i + 2번 전구가 다르면 i + 3번 스위치를 누르면 된다.
: i번이 다르면 i + 1을 누르자.
비록 i + 1이 다르더라도 i + 1을 누르지 않고, i + 2를 눌러서 i 한테는 피해가 되지 않게 되고, 이렇게 진행하면 최소값을 구하거나 또는 -1이 출력된다.
: 0번이 다르고 같고 무관하게 0번 스위치를 누르거나 누르지 않는 상태 둘로 나누어서 진행하자.
왜냐하면 최소값을 구하는 건데
만야게 0번을 눌러서 1번도 변경되었는데, 나이스 하게 0번과 1번 전구 동일하네??? 그럼 땡큐다! 그리고 2번은 그대로다.
만약에 0번을 누르지 않고, 1번을 누르게 되면, 아니 2번 전구도 변경되잖아... 그런데 2번이 다르다... 어떻게 될지
그럼 2번을 누르지 말고, 위에서 구한 명제 를 통해서
3번을 누르기만 하면된다.
: 1번 스위치를 눌러 안눌러 2개로 나뉘고, 최종 명제인
i번이 다르면 i + 1번을 누르자! 로 진행하자...
https://www.acmicpc.net/submit/2138/96086185
문제 해결 전략
: 이런식으로 했는데, 문제가 있다.
첫번째 거를 누르냐? 누르지 않는냐를 둘 다 진행해야 한다.
: 왜냐하면 첫번째 거를 누르지 않더라도, 2번째 거를 눌러서도
1번째 거를 변경할 수 있다.
// 011
// 110
이라고 할 때 2번째 스위치를 눌러서도 1번째 전구 변경이 가능하다...