홍시홍의 프로그래밍

[백준 3568] iSharp 본문

알고리즘 문제풀이/백준

[백준 3568] iSharp

홍시홍 2020. 5. 18. 21:10

분류 

구현

요구사항

주어진 입력을  iSharp 형으로 바꿔서 출력하기

풀이

문제에서 주어지는 것은

변수형1

변수이름

그리고 변수이름 뒤에 붙어나오는 변수형2

변수형 1은 초반에 처리

변수형 2는 변수명을 처리해준 뒤에 처리해준다

변수형 2를 이루는 문자는 &, *, [, ]밖에 없으니 모두 조건 처리해주면 풀 수 있다

 

#include <iostream>
#include <queue>
#include <algorithm>
#include <string.h>
#include <vector>
#include <string>
#include <deque>
using namespace std;
string bro;
vector<string> name;
deque<string> name_bro;
int main() {
	string str;
	int flag = 0;
	string brotemp;
	string nametemp;
	getline(cin, str);
	for (int i = 0; i < str.size(); i++) {
		if (flag == 0 && str[i] == ' ') {
			bro = brotemp;
			brotemp.clear();
			flag = 1;
			continue;
		}
		else if(flag==0 && str[i] != ' '){
			brotemp += str[i];
		}
		if (flag == 1 && str[i] == ' ') continue;
		if (flag == 1 && (str[i] == ',' || str[i] == ';')) {
			//형이 비어있다면 name으로 추가
			if (brotemp.empty()) {
				name.push_back(nametemp);
				name_bro.push_back(brotemp);
				nametemp.clear();
				brotemp.clear();
			}
			//name_bro 추가하면 됨
			else {
				name_bro.push_back(brotemp);
				brotemp.clear();
			}
			continue;
		}
		if (flag == 1 && (str[i] != '&' && str[i] != '[' && str[i] != ']' && str[i] != '*') ){
			nametemp+=str[i];
			//cout << nametemp << endl;
			continue;
		}
		if (flag == 1 && (str[i] == '&' || str[i] == '[' || str[i] == ']' || str[i] == '*')) {
			if (!nametemp.empty()) {
				name.push_back(nametemp);
				nametemp.clear();
			}
			if (str[i] == ']') {
				brotemp += '[';
				continue;
			}
			else if (str[i] == '[')
			{
				brotemp += ']';
				continue;
			}
			brotemp += str[i];
		//	cout << "!" << brotemp << endl;
			continue;
		}

	}
	//cout << bro << endl;
	for (int i = 0; i < name.size(); i++) {
		cout << bro;
		for (int j = name_bro[i].size() - 1; j >= 0; j--) {
			cout << name_bro[i][j];
		}
		cout << " " << name[i] << ";" << endl;
	}
}

 

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 1780] 종이의 개수  (0) 2020.05.26
[백준 18808] 스티커 붙이기  (0) 2020.05.25
[백준 14888] 연산자 끼워넣기  (0) 2020.05.18
[백준 16956] 늑대와 양  (0) 2020.05.16
[백준 14501] 퇴사  (0) 2020.05.16
Comments