[알고리즘] 인프런 - 교육과정설계

정은아·2024년 1월 13일
post-thumbnail

인프런 - 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

  • Section 5 - 교육과정설계 문제

내 풀이

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Stack_07 {
	public static void main(String[] args) {
		// 무조건 들어야하는 과목을 순서대로 poll()했는지 문제
		
		// 1. 테스트케이스 String을 2개 받는다.
		// 2. 답을 출력할 answer 변수를 만든다.
		// 3. Queue를 만들고 forEach문으로 채운다.
		// 4. 다른 forEach문을 돌려서 조건을 채운다.
		// 4-1. queue.contains()했는데 부정이면 NO
		// 4-2. queue.isEmpty()했는데 부정이면 NO
		// 5. 그 외는 YES로 출력한다.
		
		Scanner sc = new Scanner(System.in);
		
		String need = sc.next();
		String all = sc.next();
		// 초기값을 YES로 주고, 틀릴경우에만 바꾼다.
		String answer = "YES";
		
		Queue <Character> Q = new LinkedList<>();
		
		// Q값을 채운다.
		for (Character ch : need.toCharArray()) {
			Q.add(ch);
		}
		
		// all과 Q를 비교하기 시작한다.
		for (Character ch : all.toCharArray()) {
			// ch값이 Q의 맨 앞 값에 없으면 NO 한다.
			if (Q.contains(ch)) {
				if (ch != Q.poll()) {
					answer = "NO";
					break;
				}
			}
		}
		
		// forEach문이 끝났는데 Q값이 비어있지 않다면
		if (!Q.isEmpty()) {
			answer = "NO";
		}
		
		System.out.println(answer);
		
	}
}

느낀점

Stack보다 Queue가 좀 더 쉽게 문제가 나오는 것 같아서 수월하게 풀었다.
처음에는 Queue를 두 개 만들어서 비교해야하나? 싶었는데,
필수로 들어야하는 need만 Queue로 만든 후, all 값과 비교해서 답을 출력하는 문제였다.

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글