Java 코딩테스트 공부/Java 알고리즘 공부

Java 스택, 큐 알고리즘5 + deque

daramG 2022. 8. 20. 21:13

 

문제 :

첫 줄에 입력된 영어 대문자가 두 번째 줄에 입력된 영어 대문자 순서대로 포함되어 있으면 YES, 아니면 NO

입력예제

CBA

CBDAGE

출력예제

YES

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Queue;
class Main {
	public String solution(String e, String n) {
		String answer = "YES";
		Queue<Character> Q = new LinkedList<>();
		for(char x : e.toCharArray()) Q.offer(x);
		for(char x : n.toCharArray()) {
			if (Q.contains(x)) {
				if (x != Q.poll()) return "NO";
			}
		}
		if (Q.isEmpty() == false) return "NO";
		return answer;
	}

	public static void main(String[] args) throws IOException {
		Main T = new Main();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		String e = br.readLine();
		String n = br.readLine();
		bw.write(T.solution(e, n));
	    bw.flush();
		bw.close();

	}
}

 

감기 몸살로 열나고 어지러워서 문제는 대충 작성..

그냥 평범한 Queue 문제이다.

한동안 쉬어야할 것 같다. 역류성 식도염도 너무 심해져서 2주간은 약먹고 커피도 못 마실듯..

 

 

 

 

Deque

: 데이터의 추출과 삭제를 앞, 뒤에서 할 수 있다.

 

선언

Deque<Integer> dq = new ArrayDeque<Integer>();

 

Deque 함수

// 삽입
dq.offer(1); // 1을 뒤로 삽입
dq.offerLast(1); // 1을 뒤로 삽입
dq.offerFirst(1); // 1을 앞으로 삽입

// 추출
dq.poll(1); // 1을 앞에서 꺼내기
dq.pollFirst(1);
dq.pollLast(1); // 1을 뒤에서 꺼내기

dq.peek(); // 맨 앞의 값을 조회
dq.get(); // peek()랑 같음

// 크기
dq.size();
dq.isEmpty();