< 문제 분석 및 풀이 방법 >
Backjoon :: 전구와 스위치 문제는 비트마스크 연산으로 구현한다.
- Backtracking으로 앞에서부터 비교하며 모든 경우를 확인한다.
- 스위치를 누르는 과정을 XOR 연산을 활용하면 스위치를 켜고 끄는 구현을 편하게 할 수 있다.
- 첫 번째 스위치를 누르고 시작하는 경우 / 누르지 않고 시작하는 경우 로 나눠 시작한다.
- 두 번째 스위치부터 n-1 번째 스위치 값과 비교한다.
- input[n-1] == target[n-1] 이라면 스위치를 누르지 않는다.
- input[n-1] != target[n-1] 이라면 스위치를 누른다.
- (총 길이 - 1) 번째 까지 반복한다.
- (총 길이 - 1) 에 접근 시 스위치를 누를 때 / 누르지 않을 때를 비교한다.
< 소스 코드 >
1 |
|