Front-End Dev.
-
[CodeKata] 프로그래머스 : 3.25(목), 프렌즈4블록Algorithm 2021. 3. 25. 16:30
🥋 Ooooth!! (Level 2) 테트리스와 유사하되, 2x2 블록만 깨지는 패턴이다. 주의해야 할 점은, 중첩되는 부분이 있을 수 있으므로 모든 깨지는 경우를 확인한 뒤 전체적으로 지워줘야 한다. 🧮 풀이 function solution(m, n, board) { board = board.map(block => block.split("")) while (true) { let newBoard = JSON.parse(JSON.stringify(board)) let breakPoint = []; for (let x = 0 ; x < m-1 ; x++) { for (let y = 0 ; y < n-1 ; y++) { if (board[x][y] === board[x][y+1] && board [x+1][y..
-
[CodeKata] 프로그래머스 : 3.24(수), 뉴스 클러스터링Algorithm 2021. 3. 25. 02:43
🥋 Ooooth!! (Level 2) 🧮 풀이 10번 케이스에서만 실패가 발생했다. const regex = /^[a-z]*$/; function solution(str1, str2) { str1 = str1.toLowerCase().split("").map((e,i,arr) => e = arr[i+1] && e + arr[i+1]).filter(e => e && regex.test(e)).sort() str2 = str2.toLowerCase().split("").map((e,i,arr) => e = arr[i+1] && e + arr[i+1]).filter(e => e && regex.test(e)).sort() let idx = -1; let common = []; for (let s of str1..
-
[Web] 배포 - #1. Cloud ServiceEnvironment(개발환경)/Web 2021. 3. 23. 01:56
😆 서론 방금 막, 내 프로젝트 및 포트폴리오 사이트를 성황리에 배포하고 온 참이다! 뿌듯한 한편, 다양한 서비스를 통해 배포하다보니 각각의 방법도 아직까지 헷갈리고 있는 것 같다. 배포 포스팅 시리즈를 결심하게 된 계기는, 우선 클라우드 서비스에 다양한 분류가 있었다. (인프라, 플랫폼 등등) 이에 대한 정리와 더불어, 매 서비스마다의 간단한 배포방법과 내가 실제 적용하면서 겪었던 문제해결을 공유하고자 한다. 💻 Cloud Computing(클라우드 컴퓨팅) 클라우드 컴퓨팅은 인터넷으로 가상화된 IT 리소스를 서비스로 제공하는 것을 의미한다. 예를 들면, 개인용 컴퓨터나 기업의 서버에 개별적으로 저장한 프로그램이나 문서를 클라우드(대형 컴퓨터)에 저장하고 웹 브라우저 등 필요한 어플리케이션을 구동해 원..
-
[CodeKata] 프로그래머스 : 3.22(월), 예상 대진표Algorithm 2021. 3. 23. 01:08
🥋 Ooooth!! (Level 2) : 예상 대진표 a, b가 항상 이긴다고 가정하면, 다음 번호는 현재 번호를 2로 나눈뒤 반올림한 값이라는 규칙성을 근거로 풀었다. 🧮 풀이 function solution(n,a,b) { let answer = 0; while (a !== b) { a = Math.round(a/2) b = Math.round(b/2) answer++; } return answer; } answer는 정답이자, 라운드 수를 누적할 변수이다. while 반복문을 순회하며, 종료조건은 a와 b가 같아질 때이다. a와 b를 각각, 2로 나눈뒤 반올림한 값으로 최신화한다. (Math.floor) 또한, 각 순회는 곧 라운드가 진행됬다는 의미로, answer에 1을 더해준다. 🖇 리뷰 다른 ..
-
[CodeKata] 프로그래머스 : 3.20(토), 점프와 순간이동 & 영어 끝말잇기Algorithm 2021. 3. 20. 15:15
🥋 Ooooth!! (Level 2) : 점프와 순간이동 이동할 거리 N까지 최대한 순간이동으로 가는 것이 이득이다. 역발상으로, N을 0이 될 때까지 2로 나누고 (이는 모두 순간이동에 해당), 나머지가 1인 경우에만 점프로 이동한다는 개념으로 접근했다. 🧮 풀이 function solution(n) { let ans = 0; while (n > 0) { if (n%2 === 1) ans++; n = Math.floor(n/2) } return ans } ans는 반환할 정답이자, 점프한 횟수이다. while 반복문을 n이 0이 될 때까지 순회한다. 만약, 현재 n을 2로 나눈 나머지가 1인 경우, 점프에 해당하므로 ans에 1을 더한다. 그리고, n을 계속해서 Math.floor() 를 통해 2로 나..
-
[CodeKata] 프로그래머스 : 3.18(목), 배달 / [이론] Dijkstra AlgorithmAlgorithm 2021. 3. 18. 14:46
🥋 Ooooth!! (Level 2) : 배달 🧮 풀이 다익스트라 알고리즘을 사용해 최단시간을 탐색하는 문제였다. 리뷰에서, 다익스트라에 대해 자세히 정리했다. function solution(N, road, K) { let arr = Array(N + 1).fill(Infinity); let adj = Array.from(Array(N + 1), () => Array()); road.forEach(info => { let a = info[0]; let b = info[1]; let c = info[2]; adj[a].push({ to: b, weight: c }); adj[b].push({ to: a, weight: c }); }); let check = [{ to: 1, weight: 0 }]; ar..
-
[CodeKata] 프로그래머스 : 3.17(수), 짝지어 제거하기Algorithm 2021. 3. 17. 14:23
🥋 Ooooth!! (Level 2) : 짝지어 제거하기 🧮 풀이 function solution(s) { let stack = []; for (let str of s) { if (stack[stack.length-1] === str) { stack.pop() } else { stack.push(str) } } return stack.length === 0 ? 1 : 0; } stack은 말 그대로 스택이다. s(문자열)을 순회하면서, stack 제일 끝의 글자와 같은지 여부에 따라 push / pop 을 결정한다. 반복문으로 s(문자열)을 순회한다. 이 글자가 stack[stack.length-1] 글자와 같다면 stack 제일 끝을 pop() 한다. 아니라면, 현재 글자를 stack에 push() 하..
-
[Javascript] 이벤트(Event)Front-End(Web)/Javascript 2021. 3. 16. 13:56
React의 이벤트에 대해 포스팅하면서, Javascript에서의 이벤트 핸들링과 흐름, 관련된 개념들 역시 정리할 필요성이 있었다. Javascript 관련된 내용을 분리했으며, 이를 토대로 이벤트 위임까지 한번 정리해보도록 하겠다. 📒 Event Handling React 합성 이벤트의 다양한 attribute들을 알아보면서, 이벤트가 기본적으로 어떻게 브라우저에서 감지되고 전파되는지 공부할 필요를 느꼈다. 그래야, bubbles의 개념이나, eventPhase의 각 페이즈를 이해할 수 있겠다고 생각했다. 1. 이벤트 핸들링(Handling) 이벤트는 마우스 클릭이나 키보드 입력같이 일반적으로 사용자가 행하는 모든 동작을 일컫는다. 이러한 이벤트를 원하는데로 처리하는것을 이벤트 핸들링 이라고 한다. ..