[알고리즘][JS] 다중 포인터 패턴
·
알고리즘
다중 포인터 패턴은 공식이름이 아닙니다. 다중 포인터 패턴 배열이나 리스트와 같은 데이터 구조에서 특정 조건을 만족하는 요소를 찾거나 조작하는데 사용되는 알고리즘 기법. 한쌍의 값이나 조건을 충족 시킨다는 개념만 알면 됨. 두가지의 참조값을 사용한다. [1,2,3,4,5,6,7] "asdfasdgaaxvasdFF" 두가지의 참조값을 설정하여 어느 한 곳으로 이동시키며 비교한다. 서로를 향하든 혹은 서로를 향하지 않고 한곳으로 이동하든. 예시 sumZero([-3,-2,-1,0,1,2,3]) // [-3,3] sumZero([-2,0,1,3]) // undefined sumZero([1,2,3]) // undefined sumZero라는 함수는 정렬된 배열을 가진 함수입니다. 1번째 배열에서 -3 3을 더..
[알고리즘] 빈도수 세기 패턴
·
알고리즘
빈도수 세기 패턴? 어떠한 문자열 및 배열을 빈도수체크 방식으로 풀이함 방식 원래는 중첩 for문을 이용하여 풀이하였지만 시간복잡도에서 O(n^2)의 시간 복잡도를 보였기 때문에, 효율적인 알고리즘이 아니라고 판단하였고 빈도수 세기 패턴을 이용하여 시간 복잡도를 줄였다. 문제 두 개의 문자열이 주어졌을 때, 두 번째 문자열이 첫 번째 문자열의 애너그램인지 확인하는 함수를 작성합니다. 애너그램은 다른 글자의 글자를 재배열하여 형성된 단어, 구 또는 이름입니다. 예시 validAnagram('', '') // true validAnagram('aaz', 'zza') // false validAnagram('anagram', 'na..
Kotlin 공부기록 - 1
·
Android/Kotlin
추상메서드 - 선언만 되어있는 클래스 추상클래스를 상속받은 클래스는 반드시 상위추상클래스에 선언되어있는 함수및 변수를 모두 재선언하여야 한다. 인플레이션 - xml로 만들어진 화면 레이아웃 파일을 메모리에 객체화하고 그 결과물을 소스 파일과 연결 해주는과정, gradle - 빌드 자동화 도구 NODEJS랑 비슷함 onCreate(): 앱이 처음 생성될 때 호출됩니다. 액티비티나 프래그먼트가 초기화되고 사용자 인터페이스를 설정하는 등의 작업을 수행합니다. onStart(): 액티비티나 프래그먼트가 사용자에게 표시되기 전에 호출됩니다. 앱이 화면에 나타나기 전에 필요한 초기화 작업을 수행합니다. onResume(): 액티비티나 프래그먼트가 사용자와 상호작용하기 직전에 호출됩니다. 앱이 사용자와 상호작용하고 ..
Typescript(7) - Class
·
Typescript
Class TypeScript에서 클래스(Class)는 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 객체를 생성하기 위한 템플릿 또는 청사진(blueprint)입니다. 클래스를 사용하여 객체의 상태와 행위를 정의하고, 해당 클래스로부터 여러 개의 객체(인스턴스)를 생성할 수 있습니다. class Car { constructor(color){ this.color = color; } start() { console.log("start"); } } const bmw = new Car("red"); 에러를 발생합니다. color라는 프로퍼티가 Car에 존재하지 않는다고 합니다. class Car { color: string; constructor(color: string){ this.color = c..
Typescript(8) - Generics
·
Typescript
이번 포스팅에서는 Typescript의 제네릭에 대해서 알아보겠습니다. 제네릭 - Generics 이란? TypeScript의 Generics(제네릭)은 타입 안정성을 유지하면서 재사용 가능한 코드를 작성할 수 있는 기능입니다. 제네릭을 사용하면 함수나 클래스를 여러 종류의 타입에 대해 동작하도록 일반화할 수 있습니다. 이를 통해 코드의 중복을 줄이고, 타입 안전성을 확보할 수 있습니다. 제네릭은 함수나 클래스의 매개변수나 반환값에 타입 변수를 사용하는 방식으로 작성됩니다. 이 타입 변수는 실제 사용될 때 구체적인 타입으로 대체됩니다. 예를 들어, 배열의 요소 타입을 유연하게 처리하기 위해 제네릭을 사용할 수 있습니다. 예제 function getSize(arr: number[] | string[]) :..
Typescript(6) - Intersection Types (교차타입)
·
Typescript
Intersection Types (교차타입) TypeScript에서 교차 타입(Intersection Type)은 여러 타입을 조합하여 하나의 타입을 생성하는 기능입니다. 교차 타입은 & 기호를 사용하여 타입을 결합합니다. 이를 통해 변수, 매개변수, 인터페이스 등에 여러 타입의 속성 및 기능을 모두 포함할 수 있습니다. interface Car{ name: string; start(): void; } interface Toy { name: string; color: string; price: number; } const toyCar: Toy & Car = { name: "benz", start(){}, color: "black", price: 10000000, } 교차 타입이란, 두개의 interfa..
Typescript(5) - 리터럴 타입과 유니온 타입
·
Typescript
이번 포스팅에서는 리터럴타입에 대해서 알아보겠습니다. Literal Type? 리터럴 타입(Literal Types)은 TypeScript에서 특정한 값을 나타내는 타입으로, 값을 문자열, 숫자, 불리언 등의 리터럴로 제한하는 기능입니다. 리터럴 타입을 사용하면 변수 또는 매개변수가 특정한 값을 가지도록 강제할 수 있으며, 이를 통해 정확한 값의 사용을 보장하고 타입 체크를 강화할 수 있습니다. const userName1 = "Bob"; let userName2 = "Tom"; const, let js에서의 변수를 지정할때 var, const, let을 사용하여 변수지정이 가능합니다. var는 오래된 JavaScript에서 사용되던 변수 선언 방식입니다. var로 선언된 변수는 함수 스코프(functi..
Typescript(4) - 함수(2)
·
Typescript
지난시간의 포스팅하던 Typescript의 함수에 대해서 더 알아보겠습니다. rest parameter js function add(...nums) { return nums.reduce((result,num) => result + num, 0) } add(1,2,3); add(1,2,3,4,5,6,7) 일반 js로 작성된 모든 매개변수를 더하는 함수입니다. rest parameter를 이용해 모든 매개변수를 배열로 가져옵니다. ts function add(...nums: number[]) { return nums.reduce((result,num) => result + num, 0) } add(1,2,3); add(1,2,3,4,5,6,7) Typescript로 변환한 함수입니다. ...nums 뒤에 :..