목록분류 전체보기 (178)
한 걸음씩 기록하며
ECMA는 지금까지 총 10개의 판이 출판되었다. 그리고 계속해서 발전하고 개선되고 있기 때문에, 자바스크립트는 최신 문법을 잘 습득해놓는 것이 중요하다고 할 수 있다. 그러나 최신 문법만 습득하는 것으로 끝나면 안된다. 과거 버전들의 문법들을 확인하고 무엇이 바뀌었는가를 알고 있는가도 중요하다. 이는 자바스크립트에 대한 깊은 이해에 도움이 되며, 더불어 레거시 코드(누군가 작성한 기존 코드)의 동작을 해석하여 유지보수하고, 더 나아가 최신문법으로 리팩토링 할 수 있는 실력이 된다. *본 글에서는 가장 많은 변화가 있었던 ES6와 ES5의 문법적 차이를 간략하게 정리할까한다. [ES6, ES2015] ES6가 가장 최근 버전이 아님에도 불구하고, 많은 사람들에게 ES6는 여전히 회자된다. 아마도 ES6..
1. Netscape의 JavaScript 1995년 넷스케이프(Netscape)는 동적인 웹 페이지를 만들기 위해서 브라우저에서 동작하는 가벼운 프로그래밍 언어를 만들기로 했다. 이에 넷스케이프의 브랜든 아이크(Brendan Eich)가 스크립트 언어를 만들기 시작해, 고작 10일만에 개발되었다. 해당 언어는 이듬해 3월, 넷스케이프 네비게이터 2에 등장했고, 당시에는 이 언어의 첫 버전을 Mocah라고 불렀다. 이 언어는 후에 LiveScript로 바뀌었다가, 마침내 같은해 12월 현재의 JavaScript가 되었다. (JavaScript라는 이름은, 당시 Java의 유명세를 이용해 마케팅 차원에서 의도적으로 지은 것이다.) 2. ECMA의 자바스크립트 표준화 작업 JavaScript가 인기를 끌자,..
👍🏻 색을 표현하는 방법 1) 색을 표현하는 방법 컴퓨터 그래픽스는 전자 모눈종이에 색을 표현하는 점을 찍어서 그림을 만든다. 모눈의 격자에 찍는 점을 그림 원소(picture element)라고 부르고, 줄여서 픽셀(pixel)이라 부른다. 모니터는 빨,녹,파란색 광선을 섞어서 색을 만들어내는데, 이런 색 표현법을 RGB색 모델이라 부른다. 아래를 컬러큐브 라고 하는데, 각 축은 주 색을 표현하며, 0이면 색의 빛을 끈다는 의미, 1이면 최대한 밝게 켠다는 뜻 가산(additive) 색 시스템 : 빛을 혼합해 색을 표현하는 방식 감산 시스템보다 더 많은 색을 만들 수 있다. 감산(subtractive)식 시스템 : 빛을 제거하면서 색을 표현하는 방식 감산 색 시스템에서는 주 색이 청록(cyan), 자홍..
💪🏻문자를 사용한 수 표현 비트로 각종 문자를 인코딩할 수 있다는 것은, 반대로 말하면 문자를 사용하여 컴퓨터가 알아들을 수 있는 숫자를 표현할 수 있다는 것을 의미한다. 즉, 문자를 컴퓨터 언어로 인코딩하는 것이다. 그러나 이는 생각보다 단순한 문제는 아니었다. 2진데이터와 아스키 코드를 사용하면 될 것 같아 보이지만, 다음의 두 가지 제약이 있었다 1) 아스키 코드는 상당수가 제어 문자로 예약되어있고 2) 몇 시스템은 7비트만 송수신 할 수 있었기 때문이다. (아스키 코드는 8비트이다) 👉🏻 그리하여 등장한 것이 QP 인코딩과 Base64이다. 1) QP 인코딩 (Quoted-Printable encoding) 전자우편 첨부를 처리하기위해 만들어진 인코딩 방식 8비트 데이터를 7비트 데이터만 지원하는..
[신규 아이디 추천] 문제 설명 : 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해..
[시저 암호] 문제 설명 : 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. ⛏제한 조건 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 📁 입출력 예시 👉🏻 답안 1) 풀다가 구조가 꼬여서 짜증나서 if 막 때려박은 코드 ㅋㅋㅋㅋㅋㅋㅋㅋ.. function solution(s, n) { let x =..
[숫자 문자열과 영단어] 문제 설명 : 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 숫자영단어 0 zero 1 one 2 two 3 three 4 four ..
[소수 만들기] 문제 설명 : 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. ⛏제한 조건 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 📁 입출력 예시 👉🏻 답안 function solution(nums) { let result = 0, arr = []; for (let i = 0; i < nums.length; i++) { // 3중 for문으로 서로 다른..