ezhoon

[인프런] 05_07 교육과정 설계 본문

[Java] 인프런 문제풀이/Stack, Queue (자료구조)

[인프런] 05_07 교육과정 설계

ezhoon 2022. 1. 31. 21:13

📖  문제


  • 첫 줄에 한 줄에 필수과목의 순서가 주어집니다. 모든 과목은 영문 대문자입니다.
  • 두 번 째 줄부터 현수가 짠 수업설계가 주어집니다.(수업설계의 길이는 30이하이다)
    • 첫 줄에 수업설계가 잘된 것이면 “YES", 잘못된 것이면 ”NO“를 출력합니다.

출력 예시

 

 

⚠️  주의사항


  • CBA가 필수고 CBDAGE는 통과인 것처럼 CB를 듣고 다른 것을 듣고 A를 듣는 것은 괜찮고, 순서만 맞으면 된다.
  • 아예 안듣는 경우도 생각해서 코딩을 해야 한다.

 

✍️  이해


/**
 * 1. 필수과목 입력 및 본인 과목 입력
 * 2. 필수과목 Queue queue 넣기
 * 3. 본인 과목이랑 비교하기 위해서 queue.contains()사용
 *  3-1. queue.contains(o)
 *   3-1-1. o != poll() true -> o가 큐의 맨 윗값 확인 후 같으면 패스
 *   3-1-2. o != poll() false -> answer = "NO", break;
 * 4. 아예 필수과정이 없는 경우도 체크
 * 5. return answer;
 */

 

✏️  풀이



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.Queue;

public class Main {
    public String solution(String need, String plan){
        String answer="YES";
        Queue<Character> queue=new LinkedList<>();
        for (char o : need.toCharArray()) queue.offer(o); // 필수과목

        for (char o : plan.toCharArray()) { // 확인해봐야할 과목들

            if (queue.contains(o)) { // x가 포함 돼있나 확인
                if (o != queue.poll()){
                    answer = "NO"; // 없는 경우
                    break;
                }
            } // 있으면 그대로 YES
        }

        if(!queue.isEmpty()) answer = "NO"; // 아예 이수 안하는 경우도 생각해야하므로 return NO
        return answer;
    }
    public static void main(String[] args) throws IOException {
        Main T = new Main();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String need = br.readLine();
        String plan = br.readLine();

        System.out.println(T.solution(need, plan));
    }
}

Comments