728x90
반응형
문제 설명
해당 문제는 "aya", "ye", "woo", "ma" 네 가지 단어를 조합해 만들어진 문자열인지 판별하고, 조카가 발음 가능한 단어의 개수를 구하는 문제이다.
핵심 방법
문자열에서 "aya", "ye", "woo", "ma" 중 하나로 시작하는지를 확인하고 제거한다.
모든 단어가 제거되어 문자열이 비어있다면 발음 가능한 단어로 인정한다.
find에 대한 자세한 내용은 아래 블로그에서 확인할 수 있다.
Find의 자료구조 별 시간 복잡도
find 함수는 컨테이너에서 특정 데이터를 찾아주는 함수로 해당 데이터의 iterator를 반환한다.find 함수는 컨테이너의 종류와 데이터 구조에 따라 시간 복잡도가 결정된다.Vector와 Dequevector와 deque에
jinho082008.tistory.com
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<string> babbling) {
int answer = 0;
// 조카가 발음할 수 있는 단어 리스트
vector<string> babb = { "aya", "ye", "woo", "ma" };
// 입력으로 들어온 모든 문자열을 확인
for (string str : babbling)
{
bool isSpeak = true; // 현재 단어를 계속 확인할 수 있는지 여부
while (isSpeak)
{
isSpeak = false; // 반복문 탈출 조건 초기화
for (int i = 0; i < babb.size(); i++) // 발음 가능한 4가지 단어를 순회
{
size_t index = str.find(babb[i]); // 현재 단어의 시작 부분에 발음 가능한 단어가 있는지 확인
// 해당 단어가 맨 앞에 있는지 확인한다.
if (index == 0)
{
str.erase(0, babb[i].size()); // 단어를 제거
isSpeak = true; // 다음 반복 진행
break; // 더 이상 다른 단어 확인하지 않고 반복문 재시작
}
}
}
if (str.empty()) // 모든 단어가 발음 가능한 조합으로 제거되었을 경우
answer++; // 발음 가능한 단어 개수 증가
}
return answer;
}
728x90
반응형
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
코딩테스트 : 겹치는 선분의 길이 (0) | 2025.04.21 |
---|---|
코딩테스트 : 평행 (0) | 2025.04.20 |
코딩테스트 : 숫자 찾기 (0) | 2025.04.20 |
코딩테스트 : 옷가게 할인 받기 (0) | 2025.04.19 |
코딩테스트 : 피자 나눠 먹기 (3) (0) | 2025.04.19 |