From 4ee8303891986ae34b978c0f0e6f61e22ad93d09 Mon Sep 17 00:00:00 2001 From: HWANG JUNG HYEON <74359527+ghkd1418@users.noreply.github.com> Date: Sat, 28 Oct 2023 21:42:25 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Create=20=EC=A7=95=EA=B2=80=EB=8B=A4?= =?UTF-8?q?=EB=A6=AC=EA=B1=B4=EB=84=88=EA=B8=B0.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...54\352\261\264\353\204\210\352\270\260.js" | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 "junghyeon/\354\247\225\352\262\200\353\213\244\353\246\254\352\261\264\353\204\210\352\270\260.js" diff --git "a/junghyeon/\354\247\225\352\262\200\353\213\244\353\246\254\352\261\264\353\204\210\352\270\260.js" "b/junghyeon/\354\247\225\352\262\200\353\213\244\353\246\254\352\261\264\353\204\210\352\270\260.js" new file mode 100644 index 0000000..ff2a2e9 --- /dev/null +++ "b/junghyeon/\354\247\225\352\262\200\353\213\244\353\246\254\352\261\264\353\204\210\352\270\260.js" @@ -0,0 +1,31 @@ +const isCross = (stones, mid, k) => { + let count = 0; + + for(const stone of stones) { + if(stone-mid <= 0) { + count++; + if(count === k) return false + } else { + count =0; + } + } + return true +} + + +function solution(stones, k) { + let min = 1 + let max = 200000000 + console.log(min, max) + while (min <= max) { + let mid = Math.floor((min + max) / 2) + if(isCross(stones, mid, k)) { + min = mid + 1 + console.log("min",min) + } else { + max = mid -1 + console.log("max",max) + } + } + return min +} From 22a96be354dc81bc0dbebd936db3a21e49993dd3 Mon Sep 17 00:00:00 2001 From: HWANG JUNG HYEON <74359527+ghkd1418@users.noreply.github.com> Date: Mon, 6 Nov 2023 13:41:03 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Create=20=EB=B3=B4=EC=84=9D=EC=87=BC?= =?UTF-8?q?=ED=95=91.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...64\354\204\235\354\207\274\355\225\221.js" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 "junghyeon/\353\263\264\354\204\235\354\207\274\355\225\221.js" diff --git "a/junghyeon/\353\263\264\354\204\235\354\207\274\355\225\221.js" "b/junghyeon/\353\263\264\354\204\235\354\207\274\355\225\221.js" new file mode 100644 index 0000000..74d0903 --- /dev/null +++ "b/junghyeon/\353\263\264\354\204\235\354\207\274\355\225\221.js" @@ -0,0 +1,30 @@ +function solution(gems) { + let answer = [1, gems.length]; + let left = 0, right = 0; + let target = new Set(gems).size + const map = new Map() + map.set(gems[0], 1) + + //right이 범위를 초과할 때까지 반복 + while(right < gems.length) { + if(target == map.size) { + // 1. left++ (빈도수-1, 빈도수 0이 되면 Map에서 삭제) + // 2. right - left가 answer 보다 더 짧은 구간이라면 answer에 재할당 + if(right - left < answer[1] - answer[0]) { + answer[0] = left +1; + answer[1] = right+1; + } + map.set(gems[left], map.get(gems[left]) - 1) + if(map.get(gems[left]) == 0) { + map.delete(gems[left]) + } + left++; + } else { + // 조건이 만족될 때까지 right++ (빈도수 +1) + right++; + map.set(gems[right], map.get(gems[right]) ? map.get(gems[right]) +1 : 1) + } + } + + return answer; +}