
function solution(name) { // 1 let arr = [...name.matchAll(/[^A]/g)].map(x=>x.index); const dis0 = i => Math.min(i, name.length-i); //0과의 거리 const dis = (a,b) => { //a부터 b까지 돌기 if(a==b) return dis0(a); else if(a < b) return Math.min(dis0(a),dis0(b))+b-a; else return Math.min(dis0(a), dis0(b))+name.length+b-a; } let horiz = 0; if(arr.length==0) return 0; else if(arr.length==1){ horiz=dis0(arr[0])..

https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 서로소인 w,h를 가로, 세로로 하는 정사각형에 대각선을 그었을때, 대각선이 지나가는 1,1 짜리 정사각형의 개수 구하는 방법 w,h가 서로소이기 때문에 h-1만큼의 가로선을 꼭지점이 아니라 저렇게 중간을 통과하게 지나감. 그래서 선이 지나가는 정사각형 개수는 기본 w 만큼에 h -1 개 중복되서 w+h-1 ( 가로, 세로 돌려서 생각..

함수가 정의될 때 결정되는 것 : scope (클로저, 콜백의 행동을 이해하는 것과 큰 관련 있다) 함수가 호출될 때 결정되는 것 : this > 다음을 실행 컨텍스트를 통해 이해해 보자. ( ※ 이글은 모던 자바스크립트 Deep Dive 책을 토대로 작성했습니다. 인용 박스 안의 설명들은 책에서 인용! ) 실행 컨텍스트 실행 가능한 코드가 실행되기 위한 환경 (실행 가능한 코드를 형상화하고 구분하는 추상적인 개념) 실행가능한 코드 (executable code)의 단위는 전역코드, 함수코드, eval 코드로 분류 [1] 실행 순서 = 실행 컨텍스트가 push, pop되는 스택으로 관리됨. ( 실행 제어권은 스택 탑이 갖고 있음 ) [2] 실행에 필요한 정보 = 실행 컨텍스트가 식별자, this, Sco..

javascript에서 반복문 종류에 따라 비동기 처리의 실행 순서가 달라질 수 있다는 얘기를 듣고 구글링 하는데 아주 친절히 잘 정리 된 이 글을 발견했다. 😗👍 javascript의 비동기 처리는 Event Loop 이라는 것과 연관지어 이해하면 조금 더 처리 결과가 예측가능해 지는 것 같다. 그래서 조금 더 살을 붙여서 내방식 대로 답변을 작성해 보고자 한다. Q. 1초 후 한번에 10개의 "result"가 출력되는 다음의 코드를 1초 마다 10번 출력되도록 바꾸기 function test() { const promiseFunction = () => new Promise((resolve) => setTimeout(() => resolve("result"), 1000)); Array(10) .fill..
🐳 자바스크립트 모듈 종류 + 같이 보면 좋을 모듈로더, 모듈번들러에 관한 글 [요약] * CJS : node.js에서 채택한 동기적으로 동작하는 서버사이드에서 쓰기 용이한 모듈 포맷 require, module.exports - AMD : 브라우저에 중점을 둔 (로컬에서 바로 불러오는게 아니라 네트워크를 통해 모듈을 전송받는 환경) 비동기적으로 동작하는 모듈 포맷 - UMD : CJS와 AMD가 서로 호환되도록 하는 모듈 작성 방식 * ESM : 자바스크립트 언어 자체 모듈 포맷 import, export (참고) export default를 사용하면 '해당 모듈엔 개체가 하나만 있다’는 사실을 명확히 나태낼 수 있다. 그러면 가져올 때 중괄호 { } 없이 모듈을 가져올 수 있다.

🐫 문제 풀다가 새롭게 알게 된 문법 정리 입력 read_int ( ) //입력 끝까지 한줄씩 읽어들여서 List로 만들어 반환 let rec read_lines () = try let line = read_line () in int_of_string (line) :: read_lines() with End_of_file -> [] 출력 print_newline ( ) : \n 출력 print_endline line : 자바 println 같은 것. line의 타입은 반드시 string print_타입명 x : 예를들면 print_int 5 Printf.printf "Hello : %d " 5 반복문 여태까지 모르고 무조건 재귀로만 구현했었는데 반복문이 있긴 있었나보다 파일 로드 (1) 인터프리터에 로드..

몽구스 Node.js - 몽고DB ODM mongoose란, mongoDB라는 NoSQL 데이터베이스를 지원하는 노드의 확장모듈입니다. mongoose는 mongoDB의 ODM입니다. ODM은 Object Document Mapping의 약자로, 문서를 DB에서 조회할 때 자바스크립트 객체로 바꿔주는 역할을 합니다. - edu.groom.io SQL (Oracle, mysql 등) 에서는 ORM (Object relational mapping), NoSQL (특히 document database인 몽고DB)에서는 ODM (Object document mapping)이라는 용어를 쓰는 듯하다. 클론하고 있는 웹 프로젝트에서 다음과 같이 db구성을 했다. 몽고 db랑 mongoose를 처음 써봐서 공식 홈페..