** 변형 문제
예시1) 입력 : 3(A2(BC))
출력 : ABCBCABCBCABCBC
예시2) 입력 : 2(ABC)
출력 : ABCABC
import java.util.Scanner;
import java.util.Stack;
import static java.lang.Character.isDigit;
public class Main {
static String S;
static int[] garo;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
S = sc.next();
Stack<Integer> stack = new Stack<>();
garo = new int[S.length()];
for(int i=0; i<S.length(); i++){
if(S.charAt(i)=='(')
stack.push(i);
if(S.charAt(i)==')'){
int start = stack.peek();
stack.pop();
garo[start] = i;
}
}
System.out.println(cal(0,S.length()));
}
private static String cal(int start, int end){
String ans = "";
for(int i=start; i<end; i++){
if(S.charAt(i)=='('){
int num = S.charAt(i-1)-'0';
for(int j=0; j<num; j++){
ans += cal(i+1, garo[i]);
}
i = garo[i];
}
else{
if(!isDigit(S.charAt(i)))
ans += S.charAt(i);
}
}
return ans;
}
}
백준 1662번과 똑같이 풀었다. 아래 참고!
[백준] 1662_압축 (Gold1) (JAVA)
import java.util.Scanner; import java.util.Stack; public class Main { static String S; static Stack stack = new Stack<>(); static int[] close; public static void main(String[] args){ Scanner sc = ne..
yeone2ee.tistory.com
다른게 있다면,
반복하는 숫자는 출력에 포함이 안되기 때문에 - isDigit()을 이용하여 걸러냈다.
** is.Digit(char) : true리턴=숫자, false리턴=문자
'1d-1c > BOJ' 카테고리의 다른 글
2304_창고 다각형 (JAVA) (0) | 2020.10.27 |
---|---|
1152_단어의 개수 (JAVA) (0) | 2020.10.26 |
1662_압축 (JAVA) (0) | 2020.10.26 |
2606_바이러스 (JAVA) (0) | 2020.10.23 |
1697_숨바꼭질 (JAVA) (0) | 2020.10.23 |