다이나믹 프로그래밍 문제입니다.
WHEE가 나올 수 있는 경우의 수를 모두 찾고 1000000007로 나눈 나머지를 출력해야 합니다.
크기가 3인 배열을 선언합니다.
=> long[] arr = new long[3];
1. W일 경우 0번 인덱스에 +1
2. H일 경우 1번 인덱스에 0번 인덱스에 있는 값만큼 추가해줍니다.
3. E일 경우
- 2번 인덱스에 있는 값만큼 결과값에 더해줍니다.
- 2번 인덱스에 있는 값만큼 2번인덱스에 더해줍니다.
- 2번 인덱스에 1번 인덱스에 있는 값만큼 추가해줍니다.
위를 반복하여 최종적으로 WHEE가 가능한 경우를 찾을 수 있습니다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int MOD = 1_000_000_007;
long result = 0;
long[] arr = new long[3];
String s = br.readLine();
for (int i = 0; i < n; ++i) {
if (s.charAt(i) == 'W') {
++arr[0];
arr[0] %= MOD;
} else if (s.charAt(i) == 'H') {
arr[1] += arr[0];
arr[1] %= MOD;
} else if (s.charAt(i) == 'E') {
result += arr[2];
arr[2] *= 2;
arr[2] += arr[1];
arr[2] %= MOD;
}
result %= MOD;
}
bw.write(result + "\n");
bw.close();
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 3343번 장미 (0) | 2023.07.22 |
---|---|
[Java] 백준 2141번 우체국 (0) | 2023.07.19 |
[Java] 백준 8983번 사냥꾼 (0) | 2023.07.17 |
[Java] 백준 25565번 딸기와 토마토 (0) | 2023.07.15 |
[Java] 백준 22943번 수 (0) | 2023.07.15 |