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