Post

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
  1. queue에 올바른 순서 CBA를 넣는다
  2. 계획한 순서 CBDAGE를 돌면서
  3. queue안에 수강 과목이 있는지 확인
  4. queue 가장 첫 번째 과목과 CBDAGE에서 차례로 뽑은 과목이 일치하면 pop
  5. 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));

    }
}
  1. queue에 계획한 순서 CBDAGE를 넣는다.
  2. 꼭 지켜야 하는 순서 CBA를 돌면서
  3. queue에 과목이 있으면, 그 과목까지 queue를 pop
  4. 예를 들어 들어야 하는 과목이 A이고 계획한 순서가 DAGE라면 GE남을때까지 pop
  5. 그리고 들어야 하는 과목이 남아있는데 queue에 더이상 들어야 하는 과목이 포함되어 있지 않다면 정답은 NO
This post is licensed under CC BY 4.0 by the author.