[Codeforces 118] A. String Task

WBeen·2021년 2월 4일

Codeforces

목록 보기
9/26

해석이 이상할 수 있습니다.
이상한 부분은 말씀해 주시면 수정하겠습니다.

문제:https://codeforces.com/problemset/problem/118/A

시간 제한: 2s
메모리 제한: 256MB

Petya는 프로그래밍 수업에 참석하기 시작했다. 첫번째 수업에서 그는 글을 작성하는 쉬운 프로그램을 작업했다. 그 프로그램은 작업을 해야한다 다음과 같은. : 문자열을 주어진다, 만약 대문자 그리고 소문자 영어로 구성된. 그것은:

모든 모음(vowels)을 지운다.
문자 "."을 삽입한다. 각 자음 이전에
대체한다 모든 대문자 자음을 동일한 하나의 소문자로

모음은 "A", "O", "Y", "E", "U", "I", 그리고 나머지(the rest)는 자음이다. 이 프로그램은 반드시 하나의 문자열이 입력되고, 그것은 반환한다 하나의 문자열로, 프로그램이 처리한 후 처음 문자열을.

Petya를 도와달라 쉬운일에 대처(cope with) 하도록.

[입력]
첫 줄에 Petya의 프로그램의 삽입된 문자열이 나온다. 이 문자열은 오로지 대문자,소문자 라틴어로 구성돼있고 길이는 1 과 100 사이이다.
inclusive(포함한)

[출력]
결과 문자열이 출력된다. 그것은 보장한다 문자열을 빈 공간 없는.

[풀이]

문자열에서 모음에 해당하는 문자들을 공백으로 변경.
그 후 erase와 remove함수를 사용하여 공백 문자를 모두 지운다.
위 과정이 처리된 word 문자열을 반복문을 통해 .과 word에 문자들을 번갈아 출력했다.

제출했을 때 나온 오류

program.cpp(7): warning C4018: '<': signed/unsigned mismatch
아래 소스를 보면 7번 째 줄에 에러가 있다
이 에러는 int i -> unsigned i 로 바꾸고 해결했다.
아마 사이트에서 혹시나 다른 값이 비교될 것을 염려해 뜬 것으로 보인다.

program.cpp(23): error C2660: 'remove': function does not take 3 arguments
#include algorithm 추가하고 해결

program.cpp(27): warning C4018: '<': signed/unsigned mismatch
처음 오류와 동일

그리고 28번째 테스트 케이스에서 시간초과가 났는데
마지막 출력하는 부분에 반복문에서 sum을 아예 지우고 바로바로 출력하게했다.

#include <iostream>
#include <string>
using namespace std;
int main() {
	string word;
	cin >> word;
	for (int i = 0; i < word.length(); i++) {
		if (word[i] == 'A' || word[i] == 'a' ||
			word[i] == 'O' || word[i] == 'o' ||
			word[i] == 'Y' || word[i] == 'y' ||
			word[i] == 'E' || word[i] == 'e' ||
			word[i] == 'U' || word[i] == 'u' ||
			word[i] == 'I' || word[i] == 'i'
			) {
			word[i] = ' ';
		}
		else if ((int)word[i] > 64 && (int)word[i] < 91) {
			int  temp = (int)word[i];
			temp += 32;
			word[i] = (char)temp;
		}
	}
	word.erase(remove(word.begin(), word.end(), ' '), word.end());

	char sum[101];

	for (int i = 0; i < word.length() * 2; i++) {
		if (i % 2 == 0)sum[i] = '.';
		else {
			sum[i] = word[(i-1)/2];
		}
		cout << sum[i];
	}
}

아래 정답 코드가 있다.

[코드]
https://github.com/Woobeen906/Codeforces/blob/main/118-A.cpp

profile
Front-end 개발자로 가는 길을 기록

0개의 댓글