문제(출처: 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 |