[Coding test] 0405_no.1 (java)

2020-04-05

Coding test / 0405_no.1

문제설명

유출 x

풀이

package T0405;

import java.util.*;


//20min
public class t1 {
    public static int solution(String inputString) {
        int answer = -1;
        
        int an = 0;
        boolean chk = false;
        LinkedList<Character> stk = new LinkedList<>();
        
        for(int i=0;i<inputString.length(); i++) {
        	char c = inputString.charAt(i);
        	
        	if(c == ')' || c == '}' || c == ']' || c=='>') {
        		chk = true;
        		
        		if(!stk.isEmpty() && c == ')' && stk.contains('(')) {
        			int idx = stk.indexOf('(');
        			stk.remove(idx);
        			
        			an++;
        		}
        		
        		if(!stk.isEmpty() && c=='}' && stk.contains('{')) {
        			int idx = stk.indexOf('{');
        			stk.remove(idx);

        			an++;
        		}
        		if(!stk.isEmpty()&& c==']' && stk.contains('[')) {
        			int idx = stk.indexOf('[');
        			stk.remove(idx);
        			an++;
        		}
        		if(!stk.isEmpty() && c=='>' && stk.contains('<')) {
        			int idx = stk.indexOf('<');
        			stk.remove(idx);
        			
        			an++;
        		}
        		
        		//헉... 이거 안해줘서 틀림..ㅎ
        		else
        			stk.push(c);
        	}
        	
        	else if(c == '(' || c == '{' || c == '[' || c=='<') {
        		stk.push(c);
        		chk = true;
        	}
        		
        }
        
        if(chk == false)
        	return 0;
        
        if(stk.isEmpty())
        	answer = an;
        
        return answer;
    }
    
    public static void main(String[] args) {
		
    	String input = "([)]]";
    	
    	System.out.println(solution(input));
	}
}

후기 (20min)

아… 바보같이 값으로 체크를 해줄거면 )}]가 들어와도 push를 해줬어야했는데..
그 부분을 안해줘서 틀림!ㅎㅎㅎㅎㅎ…

//반례 -> ({)}}
				else
        			stk.push(c);

그리고 이런 문제에서 시간 잡아먹지 말자…