끄적끄적 코딩
article thumbnail

다이나믹 프로그래밍 문제입니다.

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

검색 태그