Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준 1158
- C/C++ 구현
- 구현
- 백준 17779
- 해시 구현
- c#
- 백준 17822
- 조세퍼스 순열
- 게리멘더링2
- 5397
- 해시구현
- 풀이
- 백준 2447
- 자료구조
- qorwns
- ㅣ풀이
- 시간 복잡도
- heap
- 1764
- 백준
- 백준 1406
- 별 찍기 10
- 원판 돌리기
- 백준 5397
- AVL 시간 복잡도
- dfs
- 스택의 특징
- 버킷 정렬
- 백준 17471
- Stack 이란
Archives
- Today
- Total
홍시홍의 프로그래밍
[백준 3568] iSharp 본문
분류
구현
요구사항
주어진 입력을 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