From 17150a9df4ac651990c020c937edd15ffeec8d45 Mon Sep 17 00:00:00 2001 From: minkyeongJ Date: Thu, 13 Oct 2022 23:08:28 +0900 Subject: [PATCH] =?UTF-8?q?=0Dfeat:=20=ED=92=80=EC=9D=B4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...202\254\355\212\270\353\246\254&49993&.js" | 55 ++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git "a/level-2/\354\212\244\355\202\254\355\212\270\353\246\254&49993&.js" "b/level-2/\354\212\244\355\202\254\355\212\270\353\246\254&49993&.js" index 7143bb8..06682b3 100644 --- "a/level-2/\354\212\244\355\202\254\355\212\270\353\246\254&49993&.js" +++ "b/level-2/\354\212\244\355\202\254\355\212\270\353\246\254&49993&.js" @@ -13,4 +13,57 @@ function solution(skill, skill_trees) { function checkOrder(checkArr) { for (let i = 0; i < checkArr.length; i++) if (checkArr[i] !== i) return false return true -} \ No newline at end of file +} + +//정답 2 - minkyeongJ +function solution(skill, skill_trees) { + //return할 변수 + var answer = 0; + + //파라미터로 받은 값을 모두 비교가능하게 쪼갬 + const skillArr = Array.from(skill); + const skillTreesElementArr = skill_trees.map(skillTreesElement => Array.from(skillTreesElement)); + + //스킬이 있는 위치 체크 + let checkArr = []; + + /** skillTreesElementArr에 있는 배열 순서대로 skillArr의 값과 비교 + * 일치하는 값은 skillArr의 배열번호로 변환하여 새로운 배열에 삽입 + * 배열을 모두 순환했는데도 값이 일치하지 않으면 27 반환 + */ + skillTreesElementArr.forEach((skillTreesElement, i) => { + checkArr[i] = []; + skillArr.forEach((skillElement, j) => { + for(let number = 0; number < skillTreesElement.length; number++){ + if(skillTreesElement[number] === skillElement){ + //같다면 number을 check[i]에 push + checkArr[i].push(number); + break; + }else if(skillTreesElement.length === number+1 && checkArr[i].length === j){ + //값을 다 비교했을 때 매칭되는 것이 없으면 27 입력 + checkArr[i].push(27); + } + } + }) + }) + + //checkArr 배열 앞 뒤 크기 비교해서 오름차순인지 확인하기 + checkArr.forEach(checkArrElement => { + //배열의 길이가 1일 때 answer++ + if(skill.length === 1){ + answer++; + } + //배열 앞 뒤 크기 비교해서 오름차순인지 확인 + for(let i = 1; i < checkArrElement.length ; i++){ + if(checkArrElement[i-1] > checkArrElement[i]){ + //오름차순이 아니면 break + break; + }else if(i === checkArrElement.length - 1){ + //오름차순이면 answer++; + answer++; + } + } + }); + + return answer; +}