Today I Learned

최지웅·2024년 3월 9일
0

Today I Learned

목록 보기
111/238

오늘 할일
1. 창엔 3일차
2. LeetCode

오늘 한일
1. LeetCode

    1. Decode String을 마저 접근 중인데, 이전에 여러 규칙들을 사칙연산처럼 취급하자는 아이디어를 이용하여 접근해보았다.
class Solution {
    public String decodeString(String s) {
        int size=s.length();

        /*
        숫자 뒤 괄호열림은 *연산, ]뒤 숫자는 +연산, 문자뒤 숫자도 +연산, [없이 문자는 +연산
         */
        StringBuilder result=new StringBuilder();
        Stack<Integer> stack_i=new Stack<>();
        Stack<Character> stack_c=new Stack<>();
        StringBuilder integer_parser=new StringBuilder();
        for(char c: s.toCharArray()){
            if('a'<=c && c<='z'){
                stack_c.push(c);
            } else if(c=='['){
                stack_i.push(Integer.valueOf(integer_parser.toString()));
                integer_parser.delete(0, integer_parser.length());
                stack_c.push(c);
            } else if(c==']'){
                char tmp=stack_c.pop();
                String target="";
                while (tmp!='['){
                    target=tmp+target;
                    tmp=stack_c.pop();
                }
                int repeat=stack_i.pop();
                result.append(target.repeat(repeat));
            } else if('0'<=c && c<'9'){
                integer_parser.append(c);
            } else{

            }
        }
        return result.toString();
    }
}


testcase 9까지 통과하였다! 추가적인 디버깅은 오늘 많이 피곤한 관계로 내일 다시 시도해보겠다.

profile
이제 3학년..

0개의 댓글