티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/12933
12933번: 오리
첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다.
www.acmicpc.net
2. 문제 이해
오리가 최소 몇 마리 우는지 구하기
한 마리가 많이 울 수도 있어서 나는 2중 for문 써서 돌려줘서 매번 확인해줬다.
예를 들어
quqacukqauackck라는 울음소리가 들어오면
quackquack
quack
이렇게 확인해줘서 cnt 로 울음소리 check 하였다.
3. 풀이 방법
1. 울음소리 문자열을 character로 바꿔줘서 char 배열에 넣어줬다.
2. duck = { 'q', 'u', 'a', 'c', 'k' }; 배열과 입력받은 울음소리 배열만큼 boolean 배열을 만들어줘서,
3. 2중 for문 돌면서 해당값이 방문 안 했던 울음소리 배열이 duck 배열의 순서를 지켰는지 (즉, 울었는지) 확인해주기
4. 맞게 울었으면 list에 넣어주기
5. 매번 for이 끝나고 list 마지막 값이 'k'가 아니면 제대로 운 게 아니니깐 return -1 해주기
주의할 점은 첫 번째 값이 'q'로 시작하지 않거나, 울음소리 배열의 길이가 5의 배수가 아닌 경우는 무조건 return -1 해줘야 함!
4. 코드
package net.acmicpc.solution;
import java.util.*;
import java.io.*;
public class Solution_12933_오리 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] str = br.readLine().toCharArray(); // 울음소리 배열
boolean[] v = new boolean[str.length];
int k = 0;
char[] duck = { 'q', 'u', 'a', 'c', 'k' };
int cnt = 0;
if (str[0] != 'q' || str.length % 5 != 0) {
System.out.println(-1);
return;
}
for (int i = 0; i < str.length; i++) {
ArrayList<Character> list = new ArrayList<>();
for (int j = i; j < str.length; j++) {
if (!v[j] && str[j] == duck[k]) {
k++;
list.add(str[j]);
v[j] = true;
if (k == 5)
k = 0;
}
}
// System.out.println(list);
if (list.size() != 0) {
if (list.get(list.size() - 1) != 'k') {
System.out.println(-1);
return;
}
cnt++;
}
}
System.out.println(cnt);
}
}
피드백은 언제나 환영입니다 :) 🌳
'algo > 백준' 카테고리의 다른 글
[백준] 1912_연속합 (JAVA) (0) | 2022.09.19 |
---|---|
[백준] 20055_컨베이어 벨트 위의 로봇(JAVA) (2) | 2022.09.19 |
[백준] 19948_음유시인 영재 (JAVA) (0) | 2022.07.08 |
[백준] 20300_서강근육맨 💪 (JAVA) (0) | 2022.06.30 |
[백준] 16439_치킨치킨치킨 🍗 (JAVA) (2) | 2022.06.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스 할인행사
- AI교육
- JAVA 할인행사
- Java 멀리 뛰기
- JAVA 컬랙션
- 1개 Key 여러개 Value
- level2 롤케이크 자르기
- 프로그래머스 롤케이크자르기
- 백엔드
- 마법사상어와 파이어볼
- 자바 return
- java 멀티버스
- 메서드형 void
- 할인행사 자바
- 16234 마법사 상어와 파이어볼
- AI-WEB 교육
- java 마법사 상어와 파이어볼
- 백준 멀티버스 자바
- 플그 멀리 뛰기
- IT개발캠프
- 멀리 뛰기 자바
- NIPA
- 서울ICT이노베이션
- 프론트엔드
- AI캠프
- HashMap 자바
- 18868 멀티버스 java
- 유데미
- 멀티버스 java
- 정보통신산업진흥원
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함