문제 링크
- http://icpc.me/13955
문제 출처
- CERC 2016 K번
시간복잡도
- O(N)
풀이
비트열의 길이가 3N이고, N번 조작해서 서로 다른 인접한 비트쌍을 2N-1개 만들어야 하고, 답은 항상 존재한다고 합니다.
문제의 조건을 보면 비트 3개마다 1번 조작해서 인접한 비트쌍을 2개씩 만들어야 하고, 맨 앞이나 맨 뒤에서 인접한 비트쌍이 1개 나온다는 것을 유추할 수 있습니다.
비트 3개로 만들 수 있는 경우의 수는 8입니다. 8개를 각각 봅시다.
1 |
|
최대 한 번의 조작으로 1개 혹은 2개의 서로 다른 인접한 비트쌍을 만들 수 있습니다.
위 방법으로 처음 3개의 비트를 조작할 수 있습니다.
4번째 비트부터는 3개씩 뒤에 붙이면서 한 번의 조작으로 새로운 서로 다른 비트쌍을 2개씩 만들어주면 됩니다.
전체 코드
1 |
|