Queue_교육과정이 순서대로 설계되었나
✅ 교육과정을 올바른 순서대로 설계하라
먼저 순서대로 이수해야 하는 필수과목이 주어진다.
CBA
총 과목이 A, B, C, D, E, F, G
가 있고
이렇게 수강하도록 계획을 짰다면, CBDAGE
올바른 순서대로 짰는지 YES
틀렸는지 NO
출력하라.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Main {
public String solution(String must, String plan){
String answer= "YES";
Queue<Character> queue= new LinkedList<>();
for(char x: must.toCharArray()){
queue.offer(x);
}
for(char x: plan.toCharArray()){
if(queue.contains(x)){
if(queue.poll() != x) answer= "NO";
}
}
if(!queue.isEmpty()) answer= "NO";
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc= new Scanner(System.in);
String must= sc.next();
String plan= sc.next();
System.out.print(T.solution(must, plan));
}
}
//⭐️input:
CBA
CBDAGE
//⭐️output:
YES
queue
에 올바른 순서CBA
를 넣는다- 계획한 순서
CBDAGE
를 돌면서 queue
안에 수강 과목이 있는지 확인queue
가장 첫 번째 과목과CBDAGE
에서 차례로 뽑은 과목이 일치하면pop
CBDAGE
를 다 확인했을 때queue
가 비었다면 정답은YES
🟢 반대로 푼 방법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Main {
public String solution(String must, String plan){
String answer= "YES";
Queue<Character> queue= new LinkedList<>();
for(char x: plan.toCharArray()){
queue.offer(x);
}
for(char x: must.toCharArray()){
if(queue.contains(x)){
while(queue.contains(x)){
queue.poll();
}
}else{
answer= "NO";
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc= new Scanner(System.in);
String must= sc.next();
String plan= sc.next();
System.out.print(T.solution(must, plan));
}
}
queue
에 계획한 순서CBDAGE
를 넣는다.- 꼭 지켜야 하는 순서
CBA
를 돌면서 queue
에 과목이 있으면, 그 과목까지queue
를 pop- 예를 들어 들어야 하는 과목이 A이고 계획한 순서가
DAGE
라면GE
남을때까지 pop - 그리고 들어야 하는 과목이 남아있는데
queue
에 더이상 들어야 하는 과목이 포함되어 있지 않다면 정답은 NO
This post is licensed under CC BY 4.0 by the author.