반응형
알고리즘 분류 : 문자열 처리
입력받은 한 줄의 변수 선언을 여러 줄의 변수 선언으로 바꾸는 문제다. 변수는 띄어쓰기로 구분되고, 여러 개의 변수가 주어질 수 있다. 또한 변수 이름이 여러 글자일 수 있기 때문에, 문자열을 뒤집을 때 유의해야 한다.
- C++은 String Stream을 이용하여 띄어쓰기로 분리된 문자열을 각각 처리하면 편하다.
- Python은 split으로 각각 처리하면 된다.
- 문자열을 뒤쪽부터 탐색하면서, 특수 문자가 나타나면 자료형 앞으로 붙인다.
- 알파벳이 나온다면, 변수명이다. 뒤쪽부터 탐색했으므로, 거꾸로 뒤집어서 출력한다.
C++ 소스코드
#include <iostream> #include <sstream> #include <string> using namespace std; void solve(string s) { for (int i=(int)s.size()-2; i>=0; i--) { if (s[i] == ']') cout << "[]", i--; else if (s[i] == '&' || s[i] == '*') cout << s[i]; else { cout << ' '; for (int j=0; j<=i; j++) cout << s[j]; cout << ";\n"; return; } } } int main() { string input; getline(cin, input); stringstream ss(input); string datatype, variable; ss >> datatype; while (ss >> variable) { cout << datatype; solve(variable); } return 0; }
Python 3 소스코드
from sys import stdin, stdout input = stdin.readline print = stdout.write def solve(s): for i in range(len(s)-2, -1, -1): if s[i] == ']': print('[]') elif s[i] == '[': continue elif s[i] in '&*': print(s[i]) else: print(' ') for j in range(0, i+1): print(s[j]) print(';\n') return datatype, *variable = input().split() for s in variable: print(datatype) solve(s)
참고
- 백준 온라인 저지 : BOJ 3568
반응형