본문 바로가기
알고리즘/SWEA

[SWEA] 4406. 모음이 보이지 않는 사람

by hyerann 2019. 5. 3.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWNcD_66pUEDFAV8&categoryId=AWNcD_66pUEDFAV8&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

www.swexpertacademy.com

string 배열의 index를 돌면서 해당 값이 a, e, i, o, u인 경우에 erase 함수를 이용하여 해당 index를 삭제했다.

처음엔 erase 기능을 하는 함수가 있을 것 같다곤 생각했는데 확실히 몰라서 밑 코드로 풀었다가 PASS 하고 난 뒤에 erase 함수를 찾아서 코드를 수정했다.

for (int j = i; j < inputStr.length(); j++) { 
	if (j == inputStr.length() - 1) inputStr[j] = '0'; 
    else inputStr[j] = inputStr[j + 1]; 
}

string 헤더파일의 내장 함수인 erase(i, j)는 배열의 i index부터 j개를 삭제한다는 의미이다.

#include <iostream>
#include <ios>
#include <string>
using namespace std;

string getResult();
string inputStr;

int main() {
	cin.tie(0); ios::sync_with_stdio(0);

	int T; cin >> T;
	for (int tc = 1; tc <= T; tc++) {
		cin >> inputStr;
		cout << '#' << tc << ' ' << getResult() << "\n";
	}
	return 0;
}

string getResult() {
	for (int i = 0; i < inputStr.length(); i++) {
		if (inputStr[i] == 'a' || inputStr[i] == 'e' || inputStr[i] == 'i' || inputStr[i] == 'o' || inputStr[i] == 'u') {
			inputStr.erase(i, 1);
			i--;
		}
	}
	string result = "";
	for (int i = 0; i < inputStr.length(); i++) {
		if (inputStr[i] == '0') break;
		else result += inputStr[i];
	}
	return result;
}

댓글