import java.util.*;
public class Main {
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"; // 큐에 있는 첫 과목이 아니면
// poll()은 꺼내고 리턴받음
}
}
if(!Q.isEmpty()) return "NO"; // 큐가 비어있지 않으면
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String a=sc.next();
String b=sc.next();
System.out.println(T.solution(a,b));
}
}
필수이수과목들을 큐에 넣는다.
수업설계한 과목들을 차례로 돌며 큐에 있고 큐에서 poll()한 값(첫번째 과목)이면 필수이수과목이다.
그렇게 하나씩 꺼내 필수이수과목 순서와 같은지 확인한다.
수업설계한 과목들을 다 돌고도 큐가 비어있지 않아도 NO를 리턴한다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 1158번- 요세푸스 문제 (0) | 2022.07.15 |
---|---|
[JAVA] 알고리즘 : Queue- 응급실 (0) | 2022.07.15 |
[JAVA] 알고리즘 : Queue- 공주 구하기 (0) | 2022.07.14 |
[JAVA] 알고리즘 : Stack- 후위식 연산(postfix) (0) | 2022.07.12 |
[JAVA] 알고리즘 : Stack- 크레인 인형뽑기(카카오) (0) | 2022.07.12 |