전체 글 147

(Javascript) 백준 2941번 : 크로아티아 알파벳

문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 입력 첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있..

(Javascript) 프로그래머스 level 1 : K번째수

문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..

(Javascript) 프로그래머스 level 1 : 없는 숫자 더하기

문제 설명 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 원소 ≤ 9 numbers의 모든 원소는 서로 다릅니다. 입출력 예numbersresult [1,2,3,4,6,7,8,0] 14 [5,8,4,0,6,7,9] 6 입출력 예 설명 입출력 예 #1 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다. 입출력 예 #2 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다. 없는 숫자의..

(Javascript) 프로그래머스 level 1 : 음양 더하기

음양 더하기 문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 제한사항 absolutes의 길이는 1 이상 1,000 이하입니다. absolutes의 모든 수는 각각 1 이상 1,000 이하입니다. signs의 길이는 absolutes의 길이와 같습니다. signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다. 입출력 예absolutessignsresult [4,7,12] [true,false,true] 9 [1,2,3] [false,..

Spring boot + React (1)

boot-react라는 리액트 프로젝트를 만들어준다. 리액트 프로젝트 경로에 들어가서 비동기 통신에 필요한 axios와 CORS 오류를 해결하기 위한 http-proxy-middleware를 npm으로 설치한다. http-proxy-middleware 설정을 위해 리액트 프로젝트의 src 폴더에 setupProxy.js 파일을 생성했다. 설정을 통해 /api 주소로 시작하는 요청은 localhost:8087로 호출한다. 예를 들어 axios로 "/api/test"로 요청을 보내면 localhost:8087/api/test로 요청이 간다. changeOrigin 설정은 CORS 문제를 해결해준다. 간단한 테스트를 위해 리액트 프로젝트 생성 시, 최상단에 기본적으로 노출되는 App 컴포넌트를 다음과 같이 수..

Frontend/React 2022.04.24

모던 자바스크립트 Deep Dive 읽기 - 27장 : 배열

배열은 여러 개의 값을 순차적으로 나열한 자료구조이다. C Family 언어와 유사하게 자바스크립트의 배열도 요소와 인덱스, 길이를 가진다. 그러나 자바스크립트의 배열은 배열이 아니다. 자료구조에서 말하는 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조를 말한다. 그러나 자바스크립트의 배열은 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있는 희소 배열의 성질을 가지고 있다. 따라서 자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체이다. 객체와 마찬가지로 배열도 다양한 생성 방식이 있다. 리터럴, Array 생성자 함수, Array.of, Array.from 등을 사용할 수 있다. 배열의 요소를 참조할 때는 대괄호 표기법을 사용한다. 배열은 사..

Javascript 2022.04.07

모던 자바스크립트 Deep Dive 읽기 - 26장 : ES6 함수의 추가 기능

ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있다. 그러나 객체에 바인딩된 함수나 보조 함수의 기능을 수행하는 콜백 함수도 생성자 함수로서 호출할 수 있는 것은 불필요한 프로토타입 객체를 생성한다. 이는 혼란스러우며 실수를 유발할 가능성이 있고 성능에도 좋지 않다. 이러한 문제를 해결하기 위해 ES6는 메서드와 화살표 함수를 도입했다. ES6에서 메서드는 축약 표현으로 정의된 함수만을 의미한다. const odj = { (...) foo () {(...)} ;//메서드 ES6에서 정의된 메서드는 인스턴스를 생성할 수 없는 non-constructor다. 따라서 메서드는 생성자 함수로서 호출할 수 없다. ES6 메서드는 자신을 바인딩한 객체를 가리키는 내부..

Javascript 2022.04.07

모던 자바스크립트 Deep Dive 읽기 - 25장 : 클래스

자바스크립트는 프로토타입 기반 객체지향 언어이다. 프로토타입 기반 객체지향 언어는 클래스가 필요 없는 객체지향 프로그래밍 언어다. 생성자 함수와 프로토타입을 통해 객체지향 언어의 상속을 구현할 수 있다. 그러나 클래스 기반 언어에 익숙한 프로그래머들은 프로토타입 기반 프로그래밍 언어에 혼란을 느낀다. ES6에 도입된 클래스는 그러한 배경을 통해 등장하였다. 클래스와 생성자 함수는 모드 프로토타입 기반의 인스턴스를 생성하지만 정확히 동일하게 동작하지는 않는다. 클래스는 생성자 함수보다 엄격하며, 생성자 함수에서는 제공하지 않는 기능도 제공한다. 클래스는 생성자 함수와 매우 유사하게 동작하지만, 다음과 같이 몇 가지 차이가 있다. 1. 클래스를 new 연산자 없이 호출하면 에러가 발생한다. 2. 클래스는 상..

Javascript 2022.04.07

모던 자바스크립트 Deep Dive 읽기 - 24장 : 클로저

클로저는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다. 자바스크립트 엔진은 렉시컬 스코프를 따른다. 따라서 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정한다. 함수가 정의된 환경과 호출되는 환경은 다를 수 있다. 렉시컬 스코프가 가능하기 위해서 함수는 자신이 정의된 환경을 기억해야 한다. 이를 위해 함수는 자신의 내부 슬롯에 상위 스코프의 참조를 저장한다. 함수 객체는 이 내부 슬롯에 자신이 존재하는 한 저장한 렉시컬 환경의 참조를 기억한다. const x = 1; // ① function outer() { const x = 10; const inner = function () { console.log(x); }; // ② ret..

Javascript 2022.04.07

모던 자바스크립트 Deep Dive 읽기 - 23장 : 실행 컨텍스트

실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. ECMAScript 사양은 소스코드를 전역 코드, 함수 코드, eval 코드, 모듈 코드의 4가지 타입으로 구분한다. 4가지 타입의 소스코드는 실행 컨텍스트를 생성한다. 소스코드의 타입이 구분되는 이유는 타입에 따라 생성 관리가 다르기 때문이다. 전역 코드는 최상위 스코프인 전역 스코프를 생성하고, 전역 변수와 전역 함수를 바인딩한다. 함수 코드는 지역 스코프를 생성하고 전역 스코프에서 시작하는 스코프 체인을 형성한다. eval 코드는 자신만의 독자적인 스코프를 생성한다. 모듈 코드는 모듈별로 독립적인 스코프를 생성한다. 모든 소스코드는 실행에 앞서 평가되며 평가 과정에서는 선언문만 먼저 실행되어 생성된 변수나 함수 식별자를 실행 컨텍..

Javascript 2022.04.07
728x90