Stack, Queue(자료구조) - 0507. 교육 과정 설계
private static String solution(String str1, String str2) {
Queue<Character> Q = new LinkedList<>();
for(char c : str1.toCharArray()) {
Q.add(c);
}
for(char c : str2.toCharArray()) {
if(!Q.isEmpty() && Q.peek() == c) Q.remove();
if(Q.isEmpty()) return "YES";
}
return "NO";
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
System.out.println(solution(str1, str2));
}
public String solution(String need, String plan){
String answer="YES";
Queue<Character> Q=new LinkedList<>();
for(char x : need.toCharArray()) Q.offer(x);
for(char x : plan.toCharArray()){
if(Q.contains(x)){
if(x!=Q.poll()) return "NO";
}
}
if(!Q.isEmpty()) return "NO";
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String a=kb.next();
String b=kb.next();
System.out.println(T.solution(a, b));
}
해당 문제는 Queue
를 이용하여 쉽게 풀 수 있다. 나의 풀이에서는 정해진 교육 과정을 큐에 저장하고
설계한 교육 과정을 순회하며 큐의 요소와 일치하면 제거하도록 구성했다.
강의에서는 정해진 교육 과정을 큐에 저장하고, 설계한 교육 과정을 순회하며 해당 과목이 큐에 있을 때,
큐에서 꺼내온(pull
) 요소와 일치하지 않으면 NO
를 반환하도록 수성했다.