728x90
설명
풀이
필수과목 순서로 입력받은 문자열을 순회하며 큐에 넣는다.
계획한 문자열을 순회하면서 다음 로직을 수행한다.
- 필수과목에 포함되어 있다면 큐에서 꺼낸 값이 해당 값과 동일한지 확인한다.
- 동일하지 않다면 교육과정을 잘못 짠 것으로, 바로 "NO"를 리턴한다.
순회가 끝난 후 큐가 비어있지 않다면 들어야 하는 필수과목이 남아있는 것이므로 "NO"를 리턴한다.
코드
package inflearn._5_7;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static String solution(String a, String b) {
String answer = "YES";
Queue<Character> queue = new LinkedList<>();
// 초기 큐 데이터 (필수 과목 순서)
for(char c : a.toCharArray()) {
queue.offer(c);
}
for(char x : b.toCharArray()) {
if(queue.contains(x)) { // 큐에 해당 값이 포함되어 있다면
if (x != queue.poll()) // 큐에서 꺼낸 값이 현재 과목과 다르다면
return "NO"; // 잘못 짠 것
}
}
if (!queue.isEmpty()) return "NO"; // 큐에 남아있으면 제대로 설계 못한 것
return answer;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
String a = br.readLine();
String b = br.readLine();
bw.write(sb.append(solution(a, b)).toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
'Coding Test Inflearn' 카테고리의 다른 글
[정렬] Least Recently Used (0) | 2024.05.08 |
---|---|
[자료구조] 응급실 (0) | 2024.04.29 |
[자료구조] 공주구하기 (1) | 2024.04.25 |
[자료구조] 쇠막대기 (1) | 2024.04.25 |
[자료구조] 후위식 연산 (postfix) (0) | 2024.04.25 |