@@ -13,4 +13,57 @@ function solution(skill, skill_trees) {
|
13 | 13 | function checkOrder(checkArr) {
|
14 | 14 | for (let i = 0; i < checkArr.length; i++) if (checkArr[i] !== i) return false
|
15 | 15 | return true
|
16 |
| -} |
| 16 | +} |
| 17 | + |
| 18 | +//정답 2 - minkyeongJ |
| 19 | +function solution(skill, skill_trees) { |
| 20 | +//return할 변수 |
| 21 | +var answer = 0; |
| 22 | + |
| 23 | +//파라미터로 받은 값을 모두 비교가능하게 쪼갬 |
| 24 | +const skillArr = Array.from(skill); |
| 25 | +const skillTreesElementArr = skill_trees.map(skillTreesElement => Array.from(skillTreesElement)); |
| 26 | + |
| 27 | +//스킬이 있는 위치 체크 |
| 28 | +let checkArr = []; |
| 29 | + |
| 30 | +/** skillTreesElementArr에 있는 배열 순서대로 skillArr의 값과 비교 |
| 31 | +* 일치하는 값은 skillArr의 배열번호로 변환하여 새로운 배열에 삽입 |
| 32 | +* 배열을 모두 순환했는데도 값이 일치하지 않으면 27 반환 |
| 33 | +*/ |
| 34 | +skillTreesElementArr.forEach((skillTreesElement, i) => { |
| 35 | +checkArr[i] = []; |
| 36 | +skillArr.forEach((skillElement, j) => { |
| 37 | +for(let number = 0; number < skillTreesElement.length; number++){ |
| 38 | +if(skillTreesElement[number] === skillElement){ |
| 39 | +//같다면 number을 check[i]에 push |
| 40 | +checkArr[i].push(number); |
| 41 | +break; |
| 42 | +}else if(skillTreesElement.length === number+1 && checkArr[i].length === j){ |
| 43 | +//값을 다 비교했을 때 매칭되는 것이 없으면 27 입력 |
| 44 | +checkArr[i].push(27); |
| 45 | +} |
| 46 | +} |
| 47 | +}) |
| 48 | +}) |
| 49 | + |
| 50 | +//checkArr 배열 앞 뒤 크기 비교해서 오름차순인지 확인하기 |
| 51 | +checkArr.forEach(checkArrElement => { |
| 52 | +//배열의 길이가 1일 때 answer++ |
| 53 | +if(skill.length === 1){ |
| 54 | +answer++; |
| 55 | +} |
| 56 | +//배열 앞 뒤 크기 비교해서 오름차순인지 확인 |
| 57 | +for(let i = 1; i < checkArrElement.length ; i++){ |
| 58 | +if(checkArrElement[i-1] > checkArrElement[i]){ |
| 59 | +//오름차순이 아니면 break |
| 60 | +break; |
| 61 | +}else if(i === checkArrElement.length - 1){ |
| 62 | +//오름차순이면 answer++; |
| 63 | +answer++; |
| 64 | +} |
| 65 | +} |
| 66 | +}); |
| 67 | + |
| 68 | +return answer; |
| 69 | +} |
0 commit comments