마닐라
2022. 5. 4. 23:59
📍 문제 설명
https://www.acmicpc.net/problem/12933
12933번: 오리
첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다.
www.acmicpc.net
💡 접근
각 인덱스에서 울고 있는 오리의 울음소리를 최대한 구한다음 다음 인덱스로 넘어가면 최소 오리 수가 나온다.
울음소리가 아닌 경우는 울음소리의 길이가 1.5의 배수가 아니거나 2.'q'로 시작하지않거나 3.1회전 후 idx가 0이 아닐 때 이다.
👩💻 코드
import java.io.*;
import java.util.*;
public class Main {
public int solution(String str) {
//울음소리는 5의 배수이고 첫글자가 q가 아니면 올바른 울음소리가 아니다.
if(str.length() % 5 != 0 || str.charAt(0) != 'q') return -1;
int answer = 0;
char[] arr = {'q', 'u', 'a', 'c', 'k'};
ArrayList<Character> list = new ArrayList<>();
char[] ch = str.toCharArray();
for (int i = 0; i < ch.length; i++) list.add(ch[i]);
while (list.size() >= 5) {
int idx = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i) == arr[idx % 5]) {
list.remove(i);
i--;
idx++;
}
}
if(idx % 5 == 0) answer++;
else return -1;
}
//올바른 울음소리가 아니면 사이즈가 0이 아니다.
if(list.size() != 0) return -1;
return answer;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//StringTokenizer st = new StringTokenizer(br.readLine());
String str = br.readLine();
Main s = new Main();
System.out.println(s.solution(str));
}
}