개발 기초 69

[JavaScript] 함수

함수란?프로그래밍 언어에서 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행단위로 정의한 것으로 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있다.함수는 객체이지만 일반 객체는 호출할 수 없지만 함수는 호출할 수 있으며 함수 객체만의 고유한 프로퍼티를 갖는다. 매개변수 : 함수 내부로 입력을 전달받는 변수인수 : 입력출력 : 반환값함수 생성함수 정의로 생성할 수 있는 것// 함수 선언문으로 함수 생성functino add(x, y) { return x + y;}함수 호출인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시var result = add(2, 5);console.log(result); // 7함수 사용 이유함수는 여러번 호출이 가능..

[JavaScript] 원시 값과 객체의 비교

원시 값변경 불가능한 값원시타입의 값은 변경 불가능한 값 (변수가 아닌 값에 대한 진술)읽기 전용 값데이터 신뢰성 보장변수에 재할당 시 변수가 참조하던 메모리 공간의 주소가 변경→ 불변성문자열과 불변성문자열은 0개 이상의 문자로 이루어진 집합 1개의 문자는 2바이트 메모리 공간에 저장되므로 문자가 몇 개로 구성되었는지에 따라 필요한 메모리 공간의 크기가 결정C는 문자열을 배열로, Java는 문자열을 String 객체로 처리하지만 자바스크립트는 개발자 편의를 위해 원시 타입인 문자열 타입을 제공하는데 이는 자바스크립트의 장점 중 하나문자열은 유사 배열 객체이면서 이터러블이므로 배열과 유사하게 각 문자에 접근할 수 있으나 일부 문자만 변경할 수 없음값에 의한 전달변수에 원시 값을 갖는 변수를 할당하면 변수에..

[Java] 탐색 트리

탐색트리(Search Tree)저장된 데이터에 대해 탐색, 삽입, 삭제, 갱신 등의 연산을 수행할 수 있는 자료구조배열이나 연결리스트는 각 연산을 수행하는데 O(N) 시간이 소요스택이나 큐는 특정 작업에 적합한 구조리스트 자료구조의 수행시간을 향상시키기 위한 트리 형태의 다양한 사전 자료구조이진탐색트리AVL트리2-3트리레드블랙트리B-트리이진탐색트리(BST)이진탐색(Binary Search)의 개념을 트리 형태의 구조에 접목한 자료구조오름차순으로 정렬된 데이터의 중간에 위치한 항목을 기준으로 데이터를 두 부분으로 나누어 가며 특정 항목을 찾는 탐색방법트리형태의 자료구조에서 이진탐색을 수행하기 위해 1차원 배열을 단순연결리스트로 만든 후 점진적으로 이진트리 형태로 변환해가는 과정트리를 중위순회하면 정렬되어 ..

[JavaScript] 객체 리터럴

객체란?자바스크립트는 개체 기반의 프로그래밍 언어이면 자바스크립트를 구성하는 거의 모든 것이 객체 (원시 값 제외 나머지)객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조객체는 변경 가능한 값객체는 0개 이상의 프로퍼티(키와 값으로 구성)와 메서드(함수가 프로퍼티 값으로 사용되는 경우)로 구성된 집합객체 리터럴에 의한 객체 생성자바스크립트는 프로토 타입 기반 객체지향 언어로서 클래스 기반 객체지향 언어(C++, Java)와 달리 다양한 객체 생성방법을 지원객체 리터럴 : 객체를 생성하기 위해 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용하여 값을 생성하는 표기법중괄호 {…} 내에 0개 이상의 프로퍼티를 정의, 미정의 시 빈 객체 생성중괄호는 코드 블록을 의미하지 않기 때문에..

[Java] Tree

트리일반적인 트리는 실제 트리를 거꾸로 세워놓은 형태의 자료 구조HTML과 XML의 문서 트리, 자바 클래스 계층 구조, 운영체제의 파일 시스템, 탐색트리, 이항 힙, 피보나치 힙과 같은 우선순위큐에서 사용일반적인 트리의 정의트리는 empty이거나 empty가 아니면 루트노드 R과 트리의 집합으로 구성되는데단, 트리의 집합은 공집합일 수도 있다.용어루트(Root) 노드 : 트리 최상위에 있는 노드자식(Child) 노드 : 노드 하위에 연결된 노드차수(Degree) : 자식 노드의 수부모(Parent) 노드 : 노드의 상위에 연결된 노드리프(Leaf) 노드 : 자식이 없는 노드 (단말(Terminal) 혹은 외부 노드라고 하기도 함)내부(Internal) 노드 : 비단말(Non-Terminal) 노드로 리..

[JavaScript] 타입 변환과 단축 평가

타입 변환개발자가 의도적으로 값의 타입을 변환하는 것은 명시적 타입 변환 또는 타입 캐스팅이라 한다.var x = 10;lvar str = x.toString();개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변화는 되는 것을 암묵적 타입 변화 또는 타입 강제 변환이라 한다.var x = 10;var str = x + '';다만 기존 원시값은 변경 불가능한 값으로 변경할 수 없으므로 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것을 의미한다.암묵적 타입 변환자바스크립트는 가급적 에러를 발생시키지 않도록 암묵적 타입 변환을 통해 표현식을 평가한다.문자열 타입으로 변환자바스크립트 엔진은 문자열 연결 연산자 표현식을 평가하기 위해 문자..

[JavaScript] 제어문

제어문제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있으나 가독성을 해치는 단점이 있다. forEach, map, filter, reduce와 같은 고차함수를 사용한 함수형 프로그래밍 기법에서 제어문 사용을 억제하여 복잡성을 해결하려고 노력한다.블록문블록문은 0개 이상의 문을 중괄호로 묶은 것으로 자바스크립트는 블록문을 하나의 실행 단위로 취급한다.블록문은 단독 사용할 수 있으나 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적이다.자바스크립트 문에서 세미콜론(;)을 붙이는 것이 일반적이나 블록문은 자체 종결성을 갖기 때문에 세미콜론을 붙이지 않는다.// 블록문{ var foo = 10;}// 제어문var x = 1;if (x 조건문주어진 조건식의 평가 결과에 따라 코드 블록..

[백준] G5. 감시 피하기 (Java)

문제 설명문제NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복도로 빠져나온 학생들은 선생님의 감시에 들키지 않는 것이 목표이다.각 선생님들은 자신의 위치에서 상, 하, 좌, 우 4가지 방향으로 감시를 진행한다. 단, 복도에 장애물이 위치한 경우, 선생님은 장애물 뒤편에 숨어 있는 학생들은 볼 수 없다. 또한 선생님은 상, 하, 좌, 우 4가지 방향에 대하여, 아무리 멀리 있더라도 장애물로 막히기 전까지의 학생들은 모두 볼 수 있다고 가정하자.다음과 같이 3x3 크기의 복도의 정보가 주어진 상황을 확인해보자. 본 문제에서 위치 값을 나타낼 때는 (행,열)의 형..

[JavaScript] 연산자

연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행하여 하나의 값을 만들고 이 때 연산의 대상을 피연산자로 함산술 연산자피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만들고 산술 연산이 불가능한 경우 NaN을 반환이항 산술 연산자2개의 피연산자를 산술 연한하여 숫자 값을 만드는데, 피연산자의 값이 바뀌는 경우가 없고 언제나 새로운 값을 만든다.+ : 덧셈- : 뺄셈* : 곱셈/ : 나눗셈% : 나머지단항 산술 연산자1개의 피연산자를 산술 연산하여 숫자 값을 만든다.++ : 증가 (부수효과 존재)-- : 감소 (부수효과 존재)+ : 어떤 효과도 없고 음수를 양수로 반전하지도 않음- : 양수를 음수로, 음수를 양수로 반전한 값을 변환증가/감소(++ /..

[JavaScript] 데이터 타입

데이터 타입 종류원시 타입숫자 타입숫자 타입의 값은 배정밀도 64비트 부동소수점 형식의 2진수로 저장되며, 모든 수를 실수 처리하고 정수만 표현하기 위한 데이터 타입이 별도 존재하지 않음특별 값 표현 가능Infinity : 양의 무한대-Infinity : 음의 무한대NaN : 산술 연간 불가(not-a-number)※ 대소문자 구분 필수문자열 타입텍스트 데이터를 나타내는 데 사용되며 문자열은 0개 이상 16비트 유니코드(UTF-16)의 집합으로 전 세계 대부분 문자 표현 가능문자열은 작은따옴표(가장 일반적인 표기법), 큰따옴표, 백틱으로 택스트로 감싸서 사용 (키워드나 식별자 같은 토큰 구분을 위해 사용)원시 타입이며, 변경 불가능한 값으로 문자열 생성되면 변경 불가능템플릿 리터럴새로운 문자열 표기법으로..