공부 5

LeetCode 1926(Nearest Exit from Entrance in Maze) 풀이

문제 첫번째 시도 (오답) 방식: BFS 시간복잡도: O(n * m) 문제를 보고 BFS라고 바로 생각할 수 있었습니다. 시작 노드부터 가까운 순으로 방문할 것이기 때문에 방문 노드가 출구라면 가차없이 반환하면 됩니다. 저는 시작 노드로부터의 거리를 저장하는 distance_map: List[List[int]]를 통해 최소 거리를 관리했습니다. BFS로 돌면서 방문하지 않은 노드라면 최소거리를 업데이트하고 다음 방문 노드로 추가했습니다. 하지만 시간 초과 에러를 만났습니다. 제공받은 테스트케이스는 전부 통과했기 때문에 최적화를 고민하기로 합니다. from collections import deque class Solution: def nearestExit(self, maze: List[List[str]]..

BOJ 2749 (피보나치 수 3)

문제 난이도: 골드 2 첫 번째 시도 방식: Memoization 시간복잡도: O(N) (O(10 ^ 18)) 피보나치를 구현할 때, 가장 먼저 접근해 볼 수 있는 방식입니다. import sys IN = sys.stdin.readline N = int(IN()) fibonacci_map = [0, 1] def fibonacci(i: int) -> int: if len(fibonacci_map) = 1000000: tmp %= 1000000 fibonacci_map.append(tmp) return fibonacci_map[i] print(fibonacci(N)) 하지만 Recursion 에러가 발생..

일급 컬렉션 (First Class Collection)

NextStep의 TDD, 클린 코드 with Kotlin을 수강하며 일급 컬렉션에 대한 내용을 접했습니다. 적용하는 방법은 간단하지만, 개념은 간단하지 않아서 흥미로웠습니다. 일급 컬렉션?? 먼저 컬렉션에 대해 알아볼까요? 컬렉션(Collection)은 ADT의 일종으로 데이터의 개수가 변할 수 있는 데이터의 집합입니다. 우리가 흔히 사용하는 List, Set, Map 등이 포함됩니다. 그렇다면 일급 컬렉션은 무엇일까요? 일급 컬렉션이란 컬렉션 이외에 다른 멤버 변수를 가지지 않는 클래스를 말합니다. 컬렉션을 한번 더 랩핑했다고 이해해도 무방할 것 같습니다. 다음은 일급 컬렉션을 적용한 예시입니다. data class Todo(private val title: String, val isDone: Boo..

공부/Kotlin 2023.11.23

Kotlin의 data class

Kotlin에는 일반 class보다 데이터를 저장하기에 더욱 적합한 멤버 함수를 가지는 data class를 제공합니다. 문법 일반적은 class 선언문 앞에 data 키워드를 붙여 사용합니다. ex. data class Todo(val title: String, var isDone: Boolean) 생성자 외부에서 선언된 멤버 변수는 data class를 이용하는 특징에 대한 대상이 아니게 됩니다. 만약 다음과 같이 정의했다면, isDone 멤버 변수는 아래 특징에서 다루는 equals()/hashCode(), toString(), componentN(), copy()를 사용할 수 없습니다. ex. data class Todo(val title: String) { val isDone: Boolean =..

공부/Kotlin 2023.11.03

this와 JS의 함수 호출 방식 (call, apply, bind)

this는 무엇일까! 보통 일반적인 객체지향 언어에서 this는 객체 자신을 의미합니다. 마찬가지로 JS에서도 자신을 의미하긴 하지만 JS는 객체와 함수의 구분이 모호하고, 어디서든 사용할 수 있기 때문에 상황에 따라 의미하는 바가 달라지기도 합니다. this는 실행 컨텍스트가 생성될 때 함께 결정되기 때문에 함수를 호출할 때 결정된다고 할 수 있습니다. (실행 컨텍스트는 함수를 호출할 때 생성되기 때문에!) 전역 공간 어쩌면 당연하게도 전역 공간에서 this는 전역 객체를 가리킵니다. 브라우저 환경에서 전역 객체의 이름은 window이고, Node.js 환경에서는 global입니다. const a = 1; console.log(a); // 1 console.log(window.a); // 1 conso..

공부/Javascript 2022.02.24