위와 같이 CBA가 첫번째 입력값으로 주어지고,
두번째 입력값이 CDKAE로 주어졌을때, Q.contains() 메소드를 이용한다.
Q.contains(x)를 하여, Q에 값이 있을 경우, Q의 제일 앞에 있다면 지워준다.
Q.contains(x)를 하여, Q에 값이 없을 경우, 그냥 지나친다.
Q.contains(x)를 하여, Q에 값이 있을 경우, Q의 제일 앞에 없다면 answer="NO"를 저장한다.
위와 같은 경우, A가 수강되지 않으므로, 예외 처리를 해주어야 한다.
public static void main(String[] args){
Main42 T = new Main42();
Scanner sc = new Scanner(System.in);
String N = sc.nextLine();
String subject = sc.nextLine();
System.out.println(T.solution(N, subject));
}
public String solution(String N, String subject){
// answer의 기본 값 "YES"로 두자!
String answer = "YES";
// LinkedList를 이용해 Queue저장소를 만들자.
Queue<Character> Q = new LinkedList<>();
// 첫번째 String N을 char형태로 x에 저장해서 Q에 넣자.
for(char x: N.toCharArray())
Q.offer(x);
// String 형식의 subject를 char형태로 바꿔서 저장한 후,
// Q가 x를 포함하고 있고, Q에서 꺼냈을 때, x와 일치하지 않으면 return "NO"를 통해 바로 종료해버립시다,
for(char x:subject.toCharArray()){
if(Q.contains(x)){
if(x != Q.poll())
return "NO";
}
}
// 여기서 끝나면 안됩니다. 필수과목을 다 수강하지 않았을 경우도 처리해 줍니다,
if(!Q.isEmpty())
return "NO";
}
package algolecture;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main42 {
public String solution(String N, String subject) {
String answer = "YES";
Queue<Character> Q = new LinkedList<>();
for(char x : N.toCharArray())
Q.offer(x);
for(char x : subject.toCharArray()) {
if (Q.contains(x)) {
if (x != Q.poll())
return "NO";
}
}
if(!Q.isEmpty())
return "NO";
return answer;
}
public static void main(String[] args) {
Main42 T = new Main42();
Scanner sc = new Scanner(System.in);
String N = sc.nextLine();
String subject = sc.nextLine();
System.out.println(T.solution(N ,subject));
}
}