[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);
그리고 이런 문제에서 시간 잡아먹지 말자…