-
Notifications
You must be signed in to change notification settings - Fork 0
/
66_.js
51 lines (43 loc) · 1.65 KB
/
66_.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
문제66 : 블럭탑쌓기
탑을 쌓기 위해 각 크기별로 준비된 블럭들을 정해진 순서에 맞게 쌓아야 합니다.
순서에 맞게 쌓지 않으면 무너질 수 있습니다.
예를 들면 정해진 순서가 BAC 라면 A 다음 C가 쌓아져야 합니다.
선행으로 쌓아야 하는 블럭이 만족된 경우라면 탑이 무너지지 않습니다.
- B를 쌓지 않아도 A와 C를 쌓을 수 있습니다.
- B 다음 블럭이 C가 될 수 있습니다.
쌓아져 있는 블럭 탑이 순서에 맞게 쌓아져 있는지 확인하세요.
1. 블럭은 알파벳 대문자로 표기합니다.
2. 규칙에 없는 블럭이 사용될 수 있습니다.
3. 중복된 블럭은 존재하지 않습니다.
입력
탑 = ["ABCDEF", "BCAD", "ADEFQRX", "BEDFG", "EFGHZ"]
규칙 = "ABD"
출력
["가능", "불가능", "가능", "가능", "가능"]
*/
// 답안
const 전체블록 = ["ABCDEF", "BCAD", "ADEFQRX", "BEDFG", "AEBFDGCH"];
const 규칙 = "ABD";
function solution(전체블록, 규칙) {
let answer = [];
for (let 부분블록 of 전체블록) {
answer.push(블록순서체크(부분블록, 규칙));
}
return answer;
}
function 블록순서체크(부분블록, 규칙) {
let 임시변수 = 규칙.indexOf(규칙[0]); // A의 인덱스값 (0)
for (let 문자 of 부분블록) {
//for of는 index가 아닌 value로 순회한다.
if (규칙.includes(문자)) {
if (임시변수 > 규칙.indexOf(문자)) {
return "불가능";
}
임시변수 = 규칙.indexOf(문자);
}
}
return "가능";
}
console.log(solution(전체블록, 규칙));
//["가능", "불가능", "가능", "가능", "가능"]