일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dp
- 백준 2473번 세 용액 - java
- 백준 1197번 최소 스패닝 트리 - java
- HashMap
- 백준 1806번 부분합 java
- 최소 힙 1927
- 백준 3190번
- 백준 1647번 도시 분할 계획 - java
- hash
- append
- 백준 1541
- Java
- replace()
- HashSet
- 프로그래머스
- 프로그래머스 java
- StringTokenizer
- 백준 1043번 거짓말 - java 분리 집합
- 프로그래머스 자바
- mysql hy000 에러
- 18111번 마인크래프트 - java 구현
- Stack
- kotlin
- ac 5430번
- 백준 2467번 용액 자바 - 이분탐색
- 백준 14938번 서강그라운드
- toUpperCase
- StringBuilder
- map
- 코틀린기초
- Today
- Total
목록분류 전체보기 (177)
말하는 컴공감자의 텃밭
Clone 인스턴스가 스스로를 복사하기 위해 사용. Cloneable 인터페이스 구현 권장. 깊은 복사는 직접 오버라이드하여 구현해야 함. 👀 얕은 복사와 깊은 복사가 존재하는데 간단하게 설명 후 예시를 통해 코드로 확인해보자. 얕은 복사는 객체의 필드 값을 새 객체로 복사하는 과정에서, 기본 타입의 필드는 그 값이 직접 복사되지만, 참조 타입의 필드는 메모리 주소(참조)만 복사된다. 이는 참조 타입의 필드가 가리키는 객체는 복사되지 않고, 원본 객체와 복사된 객체가 같은 객체를 참조하게 된다. 결과적으로, 얕은 복사를 통해 생성된 객체에서 참조 타입의 필드를 수정하면, 그 변경사항이 원본 객체에도 영향을 미친다. 두 객체가 동일한 참조 타입의 인스턴스를 공유하기 때문이다. 깊은 복사는 객체를 복사할 때..
Redux ? JavaScript 앱에서 상태 관리를 위한 자바스크립트 라이브러리이다. UI 라이브러리/프레임워크와 함께 사용될 때 매우 유용하며, 애플리케이션의 상태(state)를 예측 가능한 방식으로 관리할 수 있다. 여기서 "상태"란 앱에서 관리해야 하는 모든 데이터를 말한다. 자바 스크립트는 Props랑 State로 컴포넌트 안에서 데이터를 교환하고, 통신하는 두 용어를 정리해보자. Props (속성): 부모 컴포넌트로부터 자식 컴포넌트에게 전달되는 데이터이다. Props는 컴포넌트가 받는 입력과 같으며, 컴포넌트 내에서 변경할 수 없다. 컴포넌트를 재사용하고 구성할 수 있는 방식이다. 값을 변경하고자해도 자식에서 변경은 불가능하며 부모의 내부를 변경해야 한다. State (상태): 컴포넌트가 관..
TDD - Test-Driven Development : 테스트 주도 개발 원하는 테스트 코드를 작성하고 실행 여부를 확인하여 실제코드를 작성하는것을 말한다. TDD 장점 버그 감지: 테스트를 먼저 작성하면 개발 프로세스 초기에 기능 문제를 식별 가능. 디자인 : 개발자는 코드를 작성하기 전에 디자인을 충분히 생각해야 하기 때문에 더 모듈화되고 유연하며 확장 가능한 코드로 작성가능. 문서화: 테스트는 코드베이스에 대한 문서 형식으로 사용되며 시스템이 어떻게 작동하는지 확인 가능. 리팩토링: 테스트를 진행하면서 의도하지 않은 동작 변경 사항에 대한 코드를 리팩터링할 수 있다. React Testing Library : 행동 중심 테스트 React Testing Library 목적: React Testing..
Memoization 비용이 많이 드는 함수 호출의 결과를 저장하고, 동일한 입력이 발생할 때 캐시된 결과를 반환해서 효율을 높히는 방식이다. 알고리즘할때 DP[] 가 여기에 해당한다. useMemo 이 후크는 종속성 중 하나가 변경된 경우에만 메모된 값을 다시 계산하는 특징을 갖고 있어 최적화에 효과적이다. 모든 랜더링에서 비용이 많이 드는 계산을 방지하는데 사용된다. //사용법 const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); a와 b가 변경되지 않는 한 후속 랜더링에서 함수를 호출하는 대신 메모된 값을 사용하게 된다. Props를 통해 많은 계산이 요구될때 useMemo를 사용하게 된다. import React, { ..
자바스크립트 타입에서 원시타입은 불변성을 가지고 있고, 참조 타입은 가지고 있지 않다. 이 둘을 비교하며 확인하고 예제를 통해 정리해보자 원시타입 호출 스택에 직접 저장되는 타입. 호출 스택은 코드가 실행될 때 변수와 해당 값을 저장하는 메모리의 일부이다. undefine, null, boolean, number, string, bigint, symbol 이 해당. 불변성을 가지고 있다는 것은 이 타입들의 값을 변경하면 실제 메모리에서 새 값이 생성됨을 말한다. 그렇기에 원래 값은 변경되지 않아 불변한다. 라고 표현한다. 참조 타입 객체, 배열, 함수가 해당 힙에 저장되며, 복잡한 데이터에 사용되는 더 큰 메모리 공간입다. 호출 스택은 실제 데이터가 저장되는 힙 위치에 대한 참조(또는 포인터)를 저장한다..
문제가 너무 간단해 보였는데.. 진짜 한참 한참 걸린 문제다. 열받으면서 풀었는데 까먹을까봐 까먹을랑 말랑할때 정리한다. 먼저 지름길 갯수와, 거리가 주어진다. 지름길은 시작점과 끝점, 소모되는 시간이 주어지고 지름길이 오히려 더 길게되는 경우도 존재한다. 또한 고속도로이므로 역주행은 불가능하다. 150이 도착지점이면 정확히 150이어야 한다. 일반 고속도로의 경우 1당 1의 거리를 지닌다. 최솟값을 찾아야 하므로 효율이 좋은 지름길을 활용해서 도착점에 도달하면 되겠다. 초기에 이차원 배열을 통해 DP로 해결하려 접근했었다. 지름길을 통하면 이전에 대한 값과 비교해서 업데이트하고, 다시 그 이후의 길을 업데이트 하는식으로 말이다. 예제는 전부 옳게되었으나 문제가 발생했다. 지름길이 겹치는 경우였다. 로직..
State와 Props ? - State 부모 컴포넌트에서 자녀 컴포터는로 데이터를 보내는게 아니라 해당 컴포넌트 내부에서 데이터를 전달하고자 할때 사용. ex) 검색창에서 글을 입력할때 글이 변하는것은 state를 변경시킨다. State는 변경가능하다. State가 변하면 re-render된다. state = { message : '', attachFile : undefined, openMenu : false, }; - Props 프로퍼티 Properties의 줄임말로 상속하는 부모 컴포넌트로부터 자녀 컴포넌트에 데이터 등을 전달하는 방법이다. 읽기 전용으로 자녀 컴포넌트에서는 변하지 않는다. 변경하고자 한다면 부모 컴포넌트에서 state를 변경시켜주어야 한다. A 부모 컴포넌트 state = { A ..
오버로딩 동일한 이름에 매개 변수만 다른 여러 함수를 만드는 것을 함수의 오버로딩이라고 한다. 바로 예제로 정리해보자 예제 1 add 라는 이름의 함수에 하나는 string, 하나는 number이다. function add(a: any, b: any): any 를 통해 오버라이딩 해보자. function add(a: string, b: string): string; function add(a: number, b: number): number; function add(a: any, b: any): any { return a + b; } add("hello", "world"); add(1, 1); 만약 오버로딩되지 않은 값을 넣는다면? 예제 2 날짜를 만드는 Date 객체를 만드는 두가지를 오버로딩 하려한다..
호출 시그니처 호출 시그니처란 함수의 매개변수와 반환 값의 타입을 모두 type으로 미리 선언하는 것이다. 장점은 아래와 같다. 오버로딩: TypeScript는 메서드 오버로딩을 지원하므로 각각 다른 매개 변수 유형을 사용하여 단일 함수에 대해 여러 호출 서명을 정의할 수 있다. 이를 통해 함수는 다양한 유형의 입력을 처리할 수 있어 함수 사용 방법에 유연성을 제공한다. 인터페이스 구현: 인터페이스를 사용하여 TypeScript에서 호출 시그니처를 정의하면 코드 전체에 특정 함수 형태를 적용할 수 있는 방법이다. 구조화되고 재사용 가능하며, 유연한 방법이 제공되어 유형 안전성, 가독성 및 유지 관리성이 향상된다. 또한 객체 지향 디자인 원칙에 잘 맞으며 외부 코드를 사용하여 테스트하고 작업하는 것이 보다..
타입 스크립트의 추가 제공 타입이 존재한다. 기존에 number, boolean, string, null 등등 익숙한 명칭의 타입은 알고있었으나 Tuple, Enum, Any, Void, Never, Union 같은 특수한 타입이 있어 정리한다. Tuple : 명시된 타입만 사용가능한 타입. 배열을 보다 특수한 형태로 사용할 수 있게해주고, 아이템 순서를 정해 명시된 타입만 사용 가능하게 한다. var empId: number = 1; var empName: string = "Steve"; // 튜플 타입의 변수 선언 var employee: [number, string] = [1, "Steve"]; var person: [number, string, boolean] = [1, "Steve", true]..