🌞Algorithm/🔥Baekjoon

[Baekjoon] 3568_iSharp

뿌야._. 2024. 5. 22. 15:47

Silver III

문제(출처: https://www.acmicpc.net/problem/3568)

< iSharp >

 

문제 풀이 

 

stack을 사용해 변수형을 모두 왼쪽으로 옮긴다. 

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;

public class _3568_ { // iSharp

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		String str = bf.readLine();
		String arr[] = str.split(" ");

		Stack<Character> stack = new Stack<>();
		for (int i = 1; i < arr.length; i++) {
			String var = "";
			for (int j = 0; j < arr[i].length(); j++) {
				if (!Character.isAlphabetic(arr[i].charAt(j))) {
					if (arr[i].charAt(j) != ',' && arr[i].charAt(j) != ';')
						stack.add(arr[i].charAt(j));
				} else {
					var += arr[i].charAt(j);
				}
			}
			bw.write(arr[0]);
			while (!stack.isEmpty()) {
				if(stack.peek()==']') {
					stack.pop();
					stack.pop();
					bw.write("[]");
				}else {
					bw.write(stack.pop());
				}
			}
			bw.write(" " + var + ";\n");

		}
		bw.flush();
	}
}
변수)
str : 변수 선언문
arr : 공백 기준으로 자른 것을 배열에 저장 
stack : 변수 오른편에 있는 변수형 
var : 변수

 

변수 선언문을 입력받아 공백 기준으로 자른 후 배열에 저장한다. 배열 0번째 값은 기본 변수형이므로 1번째 값부터 탐색하며 다음 과정을 반복한다.

 

알파벳이 아니고 , 와 ;이 아니라면 변수형이라는 뜻이므로 stack에 저장한다. 알파벳이라면 변수이므로 문자열 var에 저장한다. 출력할 때는 먼저 기본 변수형인 배열 0번째 값을 출력한 후 stack의 값을 꺼낸다. 이때 peek 값이  ]라면 []을 출력해야 하므로 stack에서 값 2개를 pop 한 후 []를 출력한다. 그 외에는 pop 한 값을 바로 출력한다. stack이 비었다면 변수 var를 출력한다. 



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 2891_카약과 강풍  (0) 2024.05.24
[Baekjoon] 1544_사이클 단어  (0) 2024.05.23
[Baekjoon] 2942_퍼거슨과 사과  (0) 2024.05.20
[Baekjoon] 3018_캠프파이어  (0) 2024.05.17
[Baekjoon] 1331_나이트 투어  (0) 2024.05.16