ALGORITHM/Inflearn
자료구조(큐) - 교육과정 설계
Harimad
2022. 3. 7. 15:01

문제
입력의 첫 줄은 필수과목이고 두 번째 줄은 총 과목이다.
필수과목은 총 과목에 무조건 포함되어 있어야하고, 수업 순서도 C -> B -> A 순서대로 있어야한다.
위의 수업설계가 잘 되었으면 "YES"를 출력한다.
만약 필수과목이 C B A 인데 총 과목이 C A B 순서로 되어있다면 "NO"를 출력되어야 한다.
입력예제 1
CBA
CBDAGE
출력예제
YES
풀이
1. 총과목(plan)과 필수과목(need)을 배열로 담아 변수를 만든다.
2. 총과목이 담긴 배열 queue를 반복순회한다.
2-1. 예외조건으로, 필수과목이 담긴배열(check)안에 queue[0]요소가 있는데 queue[0] !== check[0]이면 "NO"를 리턴
2-2. check의 길이가 0 이면 "YES"리턴
2-3. queue[0] === check[0]이면 check.shift() 한다
2-4. queue.shift() 한다.
3. 마지막으로 "NO"를 리턴한다.
코드
<script>
function solution(need, plan) {
let queue = [...plan], check = [...need];
while (queue.length) { // 2
if (check.includes(queue[0]) && queue[0] !== check[0]) return "NO"; // 2-1
if (!check.length) return "YES"; // 2-2
if (queue[0] === check[0]) check.shift(); // 2-3
queue.shift();
}
return "NO";
}
let a = "CBA";
let b = "CBDAGE";
console.log(solution(a, b)); //YES
let c = "CBA";
let d = "DGECAFB";
console.log(solution(c, d)); //NO
let e = "ABC";
let f = "BABC";
console.log(solution(e, f)); //NO(Included, but not matched)
let g = "XYZ";
let h = "CBDAGE";
console.log(solution(g, h)); //NO
</script>
출처
자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의
자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., - 강의
www.inflearn.com