Skip to content

Commit e908e7d

Browse files
authored
[20250223] SWEA / D4 / 동아리실 관리하기 / 이강현
1 parent 349e9b0 commit e908e7d

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
```java
2+
import java.util.*;
3+
import java.io.*;
4+
5+
public class solution {
6+
static final int MOD = 1000000007;
7+
8+
public static void main(String[] args) throws Exception{
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
11+
int T = Integer.parseInt(br.readLine());
12+
for(int t = 1;t<=T; t++){
13+
String str = br.readLine();
14+
int N = str.length();
15+
int[] respBits = new int[N];
16+
for (int i = 0; i < N; i++) {
17+
respBits[i] = charToInt(str.charAt(i));
18+
}
19+
List<Integer>[] daySubsets = new List[N];
20+
for(int i=0;i<N;i++){
21+
daySubsets[i] = new ArrayList<>();
22+
for(int mask=1;mask<16;mask++){
23+
if((mask & respBits[i])==0) continue;
24+
if(i==0 && (mask&1)==0) continue;
25+
daySubsets[i].add(mask);
26+
}
27+
}
28+
long[] dpPrev = new long[16];
29+
long[] dpCur = new long[16];
30+
31+
for(int mask : daySubsets[0]){
32+
dpPrev[mask] = 1;
33+
}
34+
for(int day=1; day<N;day++){
35+
Arrays.fill(dpCur,0);
36+
37+
for(int curMask : daySubsets[day]){
38+
long sum = 0;
39+
for(int prevMask : daySubsets[day-1]){
40+
if((curMask&prevMask)!=0){
41+
sum += dpPrev[prevMask];
42+
}
43+
}
44+
dpCur[curMask] = sum % MOD;
45+
}
46+
dpPrev = Arrays.copyOf(dpCur,16);
47+
}
48+
long answer = 0;
49+
for(int mask : daySubsets[N-1]){
50+
answer = (answer + dpPrev[mask]) % MOD;
51+
}
52+
bw.write("#"+t+" "+answer+"\n");
53+
}
54+
bw.flush();
55+
}
56+
public static int charToInt(char c){
57+
switch (c){
58+
case 'A' : return 1;
59+
case 'B' : return 2;
60+
case 'C' : return 4;
61+
case 'D' : return 8;
62+
}
63+
return 0;
64+
}
65+
}
66+
67+
```

0 commit comments

Comments
 (0)