문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 제한 사항 s는 길이가 1 이상, 100이하인 스트링입니다. 문제 풀이 방법 주어진 문자열 s의 길이에서 절반을 나타내는 수를 선언한다. 홀수 길이라면 floor를 통해 내림수를 선언해준다. 홀수 짝수를 나누어 s.slice를 통해 해당 문자를 반환해준다. 내가 작성한 코드 const solution = (s) => { const half = Math.floor(s.length / 2); return (s.length % 2) === 0 ? s.slice(half - 1, half + 1) : s.slice(half, half + 1); }
FE개발자
호이스팅 정의 : 변수와 함수 선언문을 선언된 위치에서 코드의 꼭대기로 올리는 동작 호이스팅을 동작을 한번 코드를 보며 확인해보자. a = 2; var a; console.log(a); 위의 코드에서 var a 라는 변수 선언문이 있다. JS엔진은 코드를 인터프리팅 하기 전에 컴파일한다.(중요) 컴파일레이션 단계 중 모든 선언문을 찾아 적절한 스코프에 연결해주는 것이 렉시털 스코프의 핵심이다. 고로 위의 코드에서는 아래와 같은 구문으로 나누어진다. var a; a = 2; 첫번째 구문은 선언문으로 컴파일레이션 단계에서 처리되며, 두번째 구문은 대입문으로 실행 단계 까지 방치된다. 고로 코드는 다음과 같이 처리된다. var a; a = 2; console.log(a); 선언문만 끌어올리고 다른 대입문이나 ..
4. 스코프 역활을 하는 블록 JS에서 함수가 가장 보편적이고 널리 퍼진 디자인 접근법 이지만, 다른 스코프 단위도 존재하며 이를 이용하면 더 깔끔한 코드를 작성할 수 있다. 예를 들어 블록 스코프를 보자. JS는 지원하지 않지만 아래의 코드같은 모습은 많이 봤다. for(let i = 0; i < 10; i++){ ... } 변수 i를 for 반복문의 시작부에 선언하는 이유는 i를 오직 for 반복문과 관련해서 사용하려하기 때문이다. 블록 스코프의 목적은 변수를 최대한 사용처 가까이에서 최대한 작은 유효 범위를 갖도록 선언하는 것이다. 위의 코드에서는 그 목적을 제대로 반영하는 것 같다. 4.1. with with은 사용하게 되면 동작 속도가 저하되지만, 블록 스코프의 형태를 보여주는 한 예로 with..
1. 함수 기반 스코프 각각의 선언된 함수는 각자의 버블을 생성하지만 다른 자료 구조도 자체적인 스코프를 생성하지 않나는 것은 사실이 아니다. 함수 스코프는 모든 변수가 함수에 속하고 함수 전체(중첩 스코프 포함)에 걸쳐 사용, 재사용된다. 2. 일반 스코프에 숨기 스코프를 통해 숨는 이유는 여러가지 있지만, 소프트웨어 디자인 원칙인 '최소 권한의 원칙'*('최소 권위', '최소 노출' 으로도 불림)과 관련있다. * : 모듈 / 객체의 API와 같은 소프트웨어를 설계할 때 필요한 것만 최소한으로 남기고 나머지는 숨겨야 한다는 것 모든 변수, 함수가 글로벌 스코프에 존재하면 최소 권위에 반하는 규칙이다. const func1 = (a) => { const func2 = (a) => { return a - ..
문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요. ..
문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 사항 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 문제 풀이 방법 이 문제는 중첩 배열이 행과 열로 나뉘어 존재한다. 같은 행에 존재하는 값들을 더해야 하기에 map 함수를 이용해 index를 추출하여 같은 인덱스의 값을 더한다. 이렇게 행의 갯수만큼 반복해주면 된다. 내가 작성한 코드 const solution = (arr1, arr2) => { const answer = arr1.map((e1, i1) => { const a = e1.map((e2,..