본문 바로가기

Development

(135)
N진법 변환 문제 이번주까지 알고리즘 주차라서 열심히 프로그래머스 문제를 풀고 있었는데 3진법 뒤집기라는 문제가 나왔다. 문제링크 우리가 평소 사용하는 숫자가 10진법 숫자라는 것은 알고 있지만 이것을 다른 n진법으로 변환하는 것에는 지식이 전무한 상황이었다. 시도 자바스크립트 n진법 변환에 대해서 구글링을 해보았다. 의외로 아주 간단하게 변환이 가능했다. 10진수 > n진수 변환, n진수 > 10진수 변환 let numbers = 1022 let nNumbers = numbers.toString(n) // n진법으로 변환 let toNumbers = parseInt(nNumbers, n) // parseInt의 두번째 인수에 변환할 숫자가 몇 진법을 사용했는지 넣어준다. 해결 function solution(n) ..
JavaScript의 ES란?, ES5/ES6 문법 차이 ES란? ECMA Script를 의미하며, JavaScript의 표준화를 위한 규격을 의미한다. ES5와 ES6의 차이 자바스크립트 사용량이 증가함에 따라 ES도 계속 업데이트되고 있다. ES5는 2009년에 업데이트된 버전이며 ES6는 2015년에 업데이트 되었다. ES6는 2019년까지 매년 업데이트되고 있는 것으로 보인다. ES6의 주요 변화 let, const 키워드 추가 기존 var 키워드의 암시적 재할당의 단점을 보완하기 위해 추가 화살표 함수 (Arrow Function) 추가 함수를 간결하게 나타낼 수 있게 되었음. 기존 함수와 this 바인딩이 다름. 백틱 추가 ${}를 통해 표현식 삽입이 가능 모듈 재사용하기 위한 코드 조각을 뜻함 타입에 모듈을 추가하고 파일 확장자를 mjs로 변경 모..
match 메소드 문제 프로그래머스 문자열 다루기 기본 문제에서 정규표현식(regexp)을 사용해 주어진 문자열에서 숫자를 걸러내려고 시도했는데 일부 테스트에서 자꾸 에러가 발생 문제 링크 시도 function solution(s) { let reg = s.match(/\d/g); return reg.length === 4 || reg.length === 6 ? true : false } 원래 문자열 s에서 숫자만 골라내서 길이가 4 또는 6이면 true를 반환하고 아니면 false를 반환하도록 했다. 하지만 실패했다. 다음 시도 function solution(s) { let reg = s.match(/\d/g) || []; return reg.length === 4 || reg.length === 6 ? true : ..
다중 배열 문제 항해99 본과정 2주차 알고리즘 페어프로그래밍을 진행하던 중 프로그래머스 행렬의 덧셈에서 난관에 봉착 (무려 연습문제였음) 중첩 for문을 사용해 2차 배열인 배열1과 배열2의 같은 인덱스의 요소끼리 더해서 새로운 배열을 생성해주려고 시도했지만 자꾸 null 요소를 가진 1차 배열만 생성됨 문제링크 시도 function solution(arr1, arr2) { let arr = []; for (let i = 0; i < arr1.length; i++) { let subArr = []; arr.push(subArr[i]) for (let k = 0; k < arr1.length; k++) { subArr.push(arr1[i][k] + arr2[i][k]) } } return arr } 최종적으로 새..
올바른 TIL 작성에 대해 문제 지금까지 TIL이라고 생각하고 작성하던 글들이 모두 잘못되었다는 것을 깨닳았다. 그날 공부했던 것들을 요약 정리하는 것에 그쳤었는데 생각해보니 온전히 내 것이 됐다는 확신이 없다. 확신이 아니라 온전히 이해하고 받아들이지 못하고 있었던 것. 시도 그래서 오늘부터 TIL과 WIL의 전용 카테고리를 생성해서 강민철 튜터님의 조언에 따라 문제 / 시도 / 해결 / 알게된 것 위주로 꾸준히 TIL을 작성해보고자 한다. 해결 바로 해결될 문제는 아니다. 지금부터라도 꾸준히 작성하다보면 어느새 성장해있는 나를 발견하지 않을까하는 기분 좋은 생각을 해본다. 알게된 것 취업 시에 TIL이 생각보다 큰 비중을 차지한다는 것. 이해했다고 생각하고 넘어갔던 것들이 사실은 온전히 내것이 아니었다는 것. 지금이라도 알게되..
JS기초_보충(실행 컨텍스트 간단 정리) 실행 컨텍스트란? 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 호출 스택(Call Stack) 호출 스택이란 코드를 실행하는 순서를 담은 자료 구조이다. 코드를 후입선출(LIFO : Last In First Out)의 순서로 실행 시킨다. 실행 컨텍스트 구성요소 VariableEnvironment LexicalEnvironment ThisBindings VE와 LE의 구성 요소 record : 현재 실행 컨텍스트와 관련된 코드의 식별자 정보(hoisting) outer : 외부 환경 참조 정보 VE와 LE의 차이점 실행 컨텍스트 생성 시점에는 내용이 완전히 같지만, 이후 스냅샷 유지 여부가 다르다. VE는 실행 컨텍스트 생성 시점에 환경 정보를 스냅샷으로 그대로 담고 있지만 LE는 변경된 환경 정보..
JS기초_보충(VE와 LE) VE(VariableEnvironment)와 LE(LexicalEnvironment)의 개요 이 두가지에 담기는 항목은 완벽하게 동일하다. 스냅샷 유지 여부만 다르다. VE : 스냅샷을 유지한다 LE : 스냅샷을 유지하지 않는다. 실시간으로 변경사항을 계속 반영한다. 즉, 실행 컨텍스트를 생성할 때 VE에 정보를 먼저 담은 다음, 이를 그대로 복사해서 LE를 만들고 이후에는 주로 LE를 활용한다. 구성 요소 VE, LE 모두 동일하며 EnvironmentRecord와 OuterEvironmentReference로 구성 EnvironmentRecord (=record) 현재 컨텍스트와 관련된 코드의 식별자 정보들 저장 함수에 지정된 매개변수 식별자, 함수자체, var로 선언된 변수 식별자 등 OuterEv..
JS기초_보충(실행 컨텍스트) 실행 컨텍스트 자바스크립트의 실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다. 자바스크립트는 실행 컨텍스트가 활성화되는 시점에 다음을 수행한다. 선언된 변수 호이스팅 (hoisting) 외부 환경 정보를 구성 this 값을 설정 위와 같은 현상들 때문에 다른 언어와는 다른 자바스크립트만의 특징이 나타난다. 콜 스택 (Call Stack) 실행 컨텍스트를 이해하기 위해서 먼저 콜 스택에 대한 이해가 반드시 필요하다. 그 전에 스택에 대해 간단하게 짚고 넘어간다. 스택이란? 큐와는 반대 개념으로 마지막에 쌓인 것이 가장 먼저 나간다고 해서 LIFO(Last In, First Out)라고도 한다. 실행 컨텍스트란 실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다. 동일 환경에 있는 코..