문제 : https://www.acmicpc.net/problem/12933

 

12933번: 오리

첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다.

www.acmicpc.net

 

문제 요약 : 녹음한 소리에 필요한 오리의 최소 마리수 출력

 

JAVA

소스코드 : https://github.com/cbkpar/BOJ/blob/main/boj_12933.java

채점 번호 아이디 문제 번호 결과 메모리 시간 언어 코드 길이
34364524 cbkpar 12933 맞았습니다!! 14256KB 132ms Java 11 1065B
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int[] arr = new int[6];
        int sz = str.length();
        int mx = 0;
        arr[0] = sz;
        for (int i = 0; i < sz; i++) {
            int n = 0;
            if (str.charAt(i) == 'q') n = 1;
            if (str.charAt(i) == 'u') n = 2;
            if (str.charAt(i) == 'a') n = 3;
            if (str.charAt(i) == 'c') n = 4;
            if (str.charAt(i) == 'k') n = 5;
            if (arr[n - 1] == 0) {
                System.out.println("-1");
                return;
            }
            arr[n]++;
            arr[n - 1]--;
            mx = Math.max(mx, arr[1] + arr[2] + arr[3] + arr[4]);
        }
        if (arr[5] * 5 != sz) {
            System.out.println("-1");
            return;
        }
        System.out.println(mx);
    }
}

q, u, a, c, k 를 1, 2, 3, 4, 5라고 할 때

1. 해당 음성에서 n-1은 n보다 같거나 많이 나와야 한다.

2. 해당 음성에서 최대로 필요한 오리의 수는 1, 2, 3, 4의 합이다 (5는 이미 끝났기 때문에 필요가 없다)

3. 마지막으로 5번이 음성의 길이의/5 횟수만큼 나와야 한다.

 

위 세 조건을 만족시키도록 알고리즘을 짜서 만족하지 않을 경우 "-1"을 출력하고

주어진 음성이 주어진 조건을 만족한다면 계산 도중에 필요한 오리의 수의 최댓값을 출력한다.

 

ex) quqaquuacakcqckkuaquckqauckack

 

+ Recent posts