한번에 다 짰는데...^^;;; 이거 10번 틀렸음
테스트케이스는 다 통과하는데 3퍼에서 짤리는거 보니 극초반에 메모리 삑 아니면 설명할게 딱히 없는거 같다. 그래서 아주그냥 Scanner 썼다가 BufferedReader 썼다가 스택지우고 기본 배열의 인덱스 활용해서 했다가...^^
어느 지혜로운 분께서 틀린테스트 케이스를 공유 해주시면 좋겠다
package boj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String str = br.readLine();
Stack<Character> s = new Stack<>();
Stack<Character> s1 = new Stack<>();
int answer = 0;
for (int i = 0; i < n; i++) {
char c = str.charAt(i);
if (Character.isDigit(c)) {
answer++;
} else {
if (c == 'K') {
if (!s.isEmpty()) {
if (s.peek() == 'S') {
answer++;
s.pop();
}
}
} else if (c == 'R') {
if (!s.isEmpty()) {
if (s.peek() == 'L') {
answer++;
}
s.pop();
}
} else {
s.push(c);
}
}
}
System.out.println(answer);
}
}
정답 코드
package boj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String str = br.readLine();
Stack<Character> s = new Stack<>();
Stack<Character> s1 = new Stack<>();
int answer = 0;
for (int i = 0; i < n; i++) {
char c = str.charAt(i);
if (c == 'L') {
s1.push(c);
} else if (c == 'S') {
s.push(c);
} else if (c == 'K') {
if (!s.isEmpty()) {
answer++;
s.pop();
} else {
break;
}
} else if (c == 'R') {
if (!s1.isEmpty()) {
answer++;
s1.pop();
} else {
break;
}
} else {
answer++;
}
}
System.out.println(answer);
}
}