fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 33937 (C++) 태권도와 복싱을 합한 운동
최초 업로드: 2025-09-30 07:25:21
최근 수정 시간: 2025-09-30 07:25:21
게시자: rlatjwls3333
카테고리: 백준
조회수: 4
# [Bronze I] 태권도와 복싱을 합한 운동 [문제 링크](https://www.acmicpc.net/problem/33937) ## 문제 설명 <blockquote> <p><strong>태보</strong>는 <strong>태</strong>권도와 <strong>복</strong>싱을 합한 운동입니다!</p> </blockquote> <p>쿠옹이는 <strong>태보</strong>를 보고, 이런 생각이 들었다. '태권도와 복싱을 합해서 태보면 양궁과 파워리프팅을 합하면 양파인가? 나도 운동 하나 만들어 볼까?'</p> <p>운동 $A$와 $B$의 이름을 합치면 $A$의 첫음절과 $B$의 첫음절을 이어 붙인 이름의 새로운 운동이 만들어진다. 만약 둘 중 하나라도 첫음절이 존재하지 않는다면 새로운 운동의 이름을 만들 수 없다.</p> <p>문자열의 첫음절이란 문자열의 첫 번째 모음을 포함하고 그다음 나오는 첫 번째 자음을 포함하지 않는 접두사 중 가장 긴 접두사이다. 만약 모음이 없거나 첫 번째 모음 이후 자음이 없다면 첫음절은 존재하지 않는다. 다음은 여러 문자열의 첫음절의 예시이다.</p> <ul> <li><code>taekwondo</code> $\rightarrow$ <code>tae</code></li> <li><code>boxing</code> $\rightarrow$ <code>bo</code></li> <li><code>mtb</code>는 모음이 없어 첫음절이 존재하지 않는다.</li> <li><code>ski</code>는 모음은 있지만 첫 번째 모음 이후 자음이 없어 첫음절이 존재하지 않는다.</li> </ul> <p>모음은 <code>a</code>, <code>e</code>, <code>i</code>, <code>o</code>, <code>u</code>의 5가지 문자를 말하며, 자음은 이 5가지를 제외한 모든 문자를 말한다.</p> <p>쿠옹이가 새롭게 만들 운동의 이름을 출력해 보자.</p> ## 입력 <p>첫째 줄에 운동 $A$의 이름 $S_A(1 \le |S_A| \le 100)$이 주어진다.</p> <p>둘째 줄에 운동 $B$의 이름 $S_B(1 \le |S_B| \le 100)$이 주어진다.</p> <p>운동의 이름은 모두 영어 알파벳 소문자만으로 구성되어 있다.</p> ## 출력 <p>운동 $A$와 운동 $B$의 이름을 합한 새로운 운동의 이름을 출력하라.</p> <p>만약 주어진 규칙에 따라 운동의 이름을 만들 수 없다면, 대신 <code>no such exercise</code>를 출력하라.</p> ## 풀이 문자열에서 모음 위치를 검색하여 슬라이싱하는 문제입니다. ``` c++ #include<bits/stdc++.h> using namespace std; string a, b; void chk() { int aIdx=-1; for(int i=0;i<a.length();i++) { if(a[i]=='a' || a[i]=='e' || a[i]=='i' || a[i]=='o' || a[i]=='u') { aIdx=i; break; } } if(aIdx==-1) { cout << "no such exercise"; return; } while(++aIdx<a.length()) { if(!(a[aIdx]=='a' || a[aIdx]=='e' || a[aIdx]=='i' || a[aIdx]=='o' || a[aIdx]=='u')) { break; } } if(aIdx>a.length()) { cout << "no such exercise"; return; } int bIdx=-1; for(int i=0;i<b.length();i++) { if(b[i]=='a' || b[i]=='e' || b[i]=='i' || b[i]=='o' || b[i]=='u') { bIdx=i; break; } } if(bIdx==-1) { cout << "no such exercise"; return; } while(++bIdx<b.length()) { if(!(b[bIdx]=='a' || b[bIdx]=='e' || b[bIdx]=='i' || b[bIdx]=='o' || b[bIdx]=='u')) { break; } } if(aIdx>=a.length() || bIdx>=b.length()) { cout << "no such exercise"; return; } for(int i=0;i<aIdx;i++) cout << a[i]; for(int i=0;i<bIdx;i++) cout << b[i]; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> a >> b; chk(); } ```