diff --git "a/level-2/\354\230\210\354\203\201-\353\214\200\354\247\204\355\221\234.js" "b/level-2/\354\230\210\354\203\201-\353\214\200\354\247\204\355\221\234.js" index ebc2acb..c2072b6 100644 --- "a/level-2/\354\230\210\354\203\201-\353\214\200\354\247\204\355\221\234.js" +++ "b/level-2/\354\230\210\354\203\201-\353\214\200\354\247\204\355\221\234.js" @@ -13,3 +13,30 @@ function solution(n, a, b) { } return currentRound } + +//정답 2 - le2sky +function solution(n, a, b) { + let arr = Array.from({ length: n }, () => 0) + arr[b - 1] = "B" + arr[a - 1] = "A" + + const isDiff = () => { + return ( + (arr.indexOf("A") + 1 > arr.length / 2 && arr.indexOf("B") + 1 <= arr.length / 2) || + (arr.indexOf("A") + 1 <= arr.length / 2 && arr.indexOf("B") + 1 > arr.length / 2)) ? true : false + }; + const isLeft = () => { + return (arr.indexOf("A") + 1 > arr.length / 2) ? false : true + }; + + //대진표의 절반을 기준으로 양옆에 A와 B가 있을 경우 log2N을 구하면 라운드 수가 나옴 + while (!isDiff()) { + if (isLeft()) { + arr.splice(arr.length / 2) + } else { + arr.splice(0, arr.length / 2) + } + } + return Math.log2(arr.length) +} + \ No newline at end of file