문제 : 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
'백준온라인' 카테고리의 다른 글
[백준온라인] 6568번 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다 (0) | 2023.03.23 |
---|---|
[백준온라인] 27516번 과녁 맞추기 (0) | 2023.03.01 |
[백준온라인] 2687번 팩스 받기 (0) | 2021.10.13 |
[백준온라인] 2686번 팩스 (0) | 2021.10.13 |
[백준온라인] 16634번 Run-Length Encoding, Run! (0) | 2021.10.12 |