-
[백준/BOJ] 3568번 iSharp (C++)알고리즘 문제풀이/백준 2021. 10. 10. 17:20
https://www.acmicpc.net/problem/3568
구현 자체는 어렵지 않은데 고려해야 할 사항이 많아서 까다롭다. 첫 번째로 변수 오른쪽 옆에 붙은 &, *, []을 왼쪽으로 역순으로 옮길 때, []은 모양이 유지 되어야 한다. 두 번째는 변수명이 두 글자 이상일 수 있다. 예를들어 aa, AbCdE 등이 될 수 있다.
#include <iostream> #include <sstream> #include <algorithm> using namespace std; int main(void) { // ios_base::sync_with_stdio(false); // cin.tie(0); string str; getline(cin, str); int pos = 0; for(int i = 0; i < str.size(); i++) { if(str[i] == ' ') { pos = i; break; } } string sub1, sub2; sub1 = str.substr(0, pos); sub2 = str.substr(pos + 1, str.size() - pos); stringstream ss(sub2); string token; while(getline(ss, token, ',')) { if(token.front() == ' ') token.erase(token.begin()); if(token.back() == ';') token.pop_back(); int alpha_pos = 0; string alpha = "", var = ""; for(int i = 0; i < token.size(); i++) { if(!isalpha(token[i])) { alpha_pos = i; break; } } alpha = token.substr(0, alpha_pos); if(alpha != "") { for(int i = token.size() - 1; i >= alpha_pos; i--) { if(token[i] == '[') var += "]"; else if(token[i] == ']') var += "["; else var += token[i]; } cout << sub1 + var << " " << alpha << ";\n"; } else { cout << sub1 << " " << token << ";\n"; } } }
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준/BOJ] 2468번 안전 영역 (C++) (0) 2021.10.13 [백준/BOJ] 16506번 CPU (C++) (0) 2021.10.10 [백준/BOJ] 2615번 오목 (C++) (0) 2021.10.05 [백준/BOJ] 1063번 킹 (C++) (0) 2021.10.01 [백준/BOJ] 8979번 올림픽 (C++) (0) 2021.09.30