https://www.acmicpc.net/problem/3568

코드설명

문자열(String) + 파싱(Parsing)을 활용합니다.

 

문제에서 놓쳤었던 점은, 변수명이 여러글자인 경우입니다. 처음에 변수명이 한글자인줄 알고 처리했지만, 이후에 substring을 활용하여 변수명을 처리했습니다.

input
int& aweq*[]&, bsasd, csaaaa*;


answer
int&&[]* aweq;
int& bsasd;
int&* csaaaa;

사실, 거꾸로 뒤집혀서 들어가기에 Stack을 활용하는것도 떠올렸지만, 뒤에서 for문으로 처리하는 방식으로 구현했습니다.

코드

package Main;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
 
public class Main {
	static int N, M, S, P, A, B, X, L, R, C, n, k, m, l, K, D, T;
	static int answer = 0;
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//		StringTokenizer st = new StringTokenizer(br.readLine());
		
		String str = br.readLine();
		String[] split = str.split("[ ]");
		String basicVariable = split[0];
		
		for(int i=1; i<split.length; i++) {
			StringBuilder sb = new StringBuilder();
			
			sb.append(basicVariable);
			for(int j = split[i].length() - 2; ; j--) {
				if(split[i].charAt(j) != ']' && split[i].charAt(j) != '&' && split[i].charAt(j) != '*') {
					sb.append(" ").append(split[i].substring(0, j + 1)).append(';');
					break;
				}
				if(split[i].charAt(j) == ']') {
					sb.append("[]");
					j-=1;
					continue;
				}
				sb.append(split[i].charAt(j));
			}
			System.out.println(sb.toString());
		}
		
	}
		
	
}

+ Recent posts