
문제링크 - 기술 연계마스터 임스
사용한 자료구조 : Stack
문제해결 : 두가지를 스택을 만들어 연속 기술을 사용할 수 있게 한다.
스택하나는 L전용으로 스택하나는 S전용으로
R이랑 K에 맞는 연속기술이 isEmpty상황이라면 break;를 통해 넘어가고, 만약에 연속기술이 가능하면 count를 시킨다.
기본적으로 숫자는 스택에 넣지 않고 바로 자동으로 count를 시킨다.
느낀점 : 구현과 자료구조가 들어가면 항상 헷갈리는데, 문제를 어떻게 풀어야될 지에 대한 고민을 자세히 하고, 더 빠른 시간 내에 풀기 위해 노력해야겠다.
import java.io.*;
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 skills = br.readLine();
Stack<Character> stackL = new Stack<>(), stackS = new Stack<>();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int count = 0;
for (int i = 0; i < N; i++) {
char current = skills.charAt(i);
if (current >= '1' && current <= '9') {
count++;
} else if (current == 'L') {
stackL.add(current);
} else if (current == 'S') {
stackS.add(current);
} else if (current == 'R') {
if (!stackL.isEmpty()) {
count++;
stackL.pop();
} else {
break;
}
} else if (current == 'K') {
if (!stackS.isEmpty()) {
count++;
stackS.pop();
} else {
break;
}
}
}
System.out.println(count);
}
}