Skip to content

Commit d2361b7

Browse files
authored
Merge pull request #856 from AlgorithmWithGod/LiiNi-coder
[20250909] BOJ / G4 / 전구와 스위치 / 이인희
2 parents 090df70 + 7a5a7e2 commit d2361b7

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.Arrays;
6+
7+
public class Main {
8+
public static void main(String[] args) throws IOException {
9+
var br = new BufferedReader(new InputStreamReader(System.in));
10+
int n = Integer.parseInt(br.readLine());
11+
char[] src = br.readLine().toCharArray();
12+
char[] dst = br.readLine().toCharArray();
13+
int answer = process(Arrays.copyOf(src, n), dst, false);
14+
answer = Math.min(answer, process(Arrays.copyOf(src, n), dst, true));
15+
16+
System.out.println(answer == Integer.MAX_VALUE ? -1 : answer);
17+
}
18+
static int process(char[] s, char[] target, boolean firstPress) {
19+
int count = 0;
20+
// 첫번째 토글로 그리디 분기
21+
if (firstPress) {
22+
toggle(s, 0);
23+
toggle(s, 1);
24+
count++;
25+
}
26+
for (int i = 1; i < s.length; i++) {
27+
if (s[i - 1] != target[i - 1]) {
28+
toggle(s, i - 1);
29+
toggle(s, i);
30+
if (i + 1 < s.length)
31+
toggle(s, i + 1);
32+
count++;
33+
}
34+
}
35+
36+
for (int i = 0; i < s.length; i++) {
37+
if (s[i] != target[i]) return Integer.MAX_VALUE;
38+
}
39+
return count;
40+
}
41+
42+
static void toggle(char[] arr, int i) {
43+
arr[i] = arr[i] == '0' ? '1' : '0';
44+
}
45+
}
46+
```

0 commit comments

Comments
 (0)