본문 바로가기

알고리즘 (2020 : 08 : 10 ~ )/구현, 시뮬

[백준 / BOJ] 12933 오리

문제

출처 : www.acmicpc.net/problem/12933

 

12933번: 오리

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

www.acmicpc.net

오리의 울음소리는 quack이다.

 

'q', 'u', 'a', 'c', 'k'로 이루어진 문자열이 주어졌을때,

존재할수있는 오리의 최소수를 구하는 문제다.

 

풀이

구현문제다.

가능한 최소한의 오리 수를 구해야하므로, 'q'를 만났을때부터 시작해서 오리의 울음(quack)을 만들때마다 각 문자열 위치를 체크해준다.

한 오리를 최대한 많이 울게하면 된다.

 

예를들어,

울음소리가 quqacukqauackck로 주어졌다면

0번 인덱스에서 첫 'q'를 만나서 탐색을 시작하고 한번의 탐색으로

q u q a c u k q a u a c k c k

빨강색만큼 체크된다. (한오리가 빨강색 만큼 울수있음)

2번인덱스에서 체크되어있지않은 'q'를 만나고 탐색을 시작한다.

q u q a c u k q a u a c k c k

두번째 탐색에선 파랑색만큼 체크되고 총 2마리의 오리가 최소한으로 존재할수있다.

{'q', 'u', 'a', 'c', 'k'}각 문자를 만날때마다 체크해주는게 아니라 quack를 완성했을때 체크해줘야한다.

 

녹음소리가 올바르지않을때 (-1 출력)예외처리에서 몇번 틀렸는데,

1. 울음소리가 5로 나누어 떨어지지 않을때.

-> quack는 5글자 이므로 올바른 울음소리는 5로 나누었을때 나머지가 0이 나와야한다.

 

2. 모든 울음소리가 체크되지않았을때.

 

3. 오리가 0마리일때.

-> 문자입력이 5보다 크다. 따라서 오리가 0마리가 나온다면 올바르지 않은 울음소리다.

 

 

소스코드

https://github.com/devxb/JJUNalgo/blob/master/12933%20%EC%98%A4%EB%A6%AC/main.cpp

 

devxb/JJUNalgo

백준 알고리즘 소스코드🙃. Contribute to devxb/JJUNalgo development by creating an account on GitHub.

github.com