분류 전체보기 (38) 썸네일형 리스트형 플라이웨이트 & 발행-구독 패턴 핵심: 연관된 객체끼리 데이터를 공유하여 애플리케이션 메모리 최소화. 캐시 개념을 코드로 패턴화이를 재사용한 객체 인스턴스를 공유시킴 Flyweight : 경량 객체를 묶는 인터페이스ConcreteFlyweight : 공유 가능하여 재사용되는 객체 (intrinsic state), flIweight의 하위클래스UnsharedConcreteFlyweight : 공유 불가능한 객체 (extrinsic state), flIweight의 하위클래스FlyweightFactory : Flyweight 객체 관리 클래스. 경량 객체를 만드는 공장 역할 &캐시 역할-GetFlyweight() 메서드는 팩토리 메서드 역할만일 객체가 메모리에 존재하면 그대로 가져와 반환하고, 없다면 새로 생성해 반환한다Client : 클.. 자바스크립트 기초 - 프로그래밍 시작하기 자바스크립트2015년 이후 매우 발전(ES6)하였다.console.log로 출력 가능.console.log(1+5)console.log("6")줄은 세미콜론으로 구분해주자.사실 상황에 따라 자동으로 추가해주기도 하지만 반드시 사용하는게 편하다.//, /**/은 주석처리.Data type 자료형intString - 더하기 기호로 문자열 연결 가능BooleanfloatNumber추상화abstraction목적을 명확히, 불필요한 것은 숨기고 핵심만변수(값에 이름을 부여):변수를 활용해서 코드를 추상화let espressPrice;expressoPrice = 3000;//할당let espressPrice= 3000;//선언과 동시에 초기화//할당과 초기화는 다르다. 할당은 여러번 가능.//초기화는 맨 처음 한 .. 6. 그래프, 그래프 탐색 - 그래프- DFS- BFS 정점(vertex):그래프를 구성하는 개체(점)=노드간선(edge): 정점과 정점을 연결하는 선그래프(gragh): 정점과 간선으로 구성된 자료구조방향그래프(directed graph): 간선에 방향이 있는 그래프 cf. 양방향 그래프(undirected graph). 그냥 그래프와 같다.차수(degree): 정점에 연결된 간선의 수방향 그래프에서는 정점으로 들어오는 간선과 나가는 간선을 indgree, outdegree로 구분.경로(path): 정점을 중복해서 지나지 않는 간선의 나열사이클: 시작 정점과 끝 정점이 같은 경로방향 그래프에서 사이클을 판단할 때는 방향을 고려해야한다.순환 그래프(cyclic graph)비순환 그래프(acyclic graph) 그래프는 두 정.. 5. Dynamic Porgramming 동적계획법 일명 DP.코딩테스트에서 매우 자주 나온다.큰 문제를 작게 쪼갠 후작은 문제를 해결한 답을 기반으로 큰 문제를 해결한다. https://www.acmicpc.net/problem/2748과거에 한 번 풀어봤던 문제이다.아래와 같이 풀면 시간초과가 나온다. 왤까?def fib(n): if n==0: return 0 if n==1: return 1 return fib(n-2)+fib(n-1)n= int(input())print(fib(n)) 이미 구한 값을 반복해서 구하기에 이를 "저장"해놓았다가 사용하면 된다.이를 "메모이제이션"이라 한다.def fibo(n): if n == 1 or n == 2: return 1 if not dp[n]: .. 4. 분할정복과 이분탐색 Divide and Conquer: 분할정복1. 분할: 큰 문제를 잘게 쪼개고2. 정복: 쪼개진 작은 문제를 해결하고3. 병합: 결과를 합쳐서 큰 문제를 해결하자 큰 문제와 작은 문제가 "같은 구조" 로 이루어져 있을 때 적용하기 좋다.따라서 분할정복도 "재귀"를 이용하여 구현하는 경우가 많다. 색종이문제https://www.acmicpc.net/problem/2630#색종이를 4등분해도 여전히 정사각형 형태 유지.#부분문제가 전체 문제와 같은 구조. 재귀함수가 생각나지 않는가?n= int(input())board= [list(map(int,input().split())) for _ in range(n)]#1. 4등분한다#각각 쪼갠 색종이에 대해 solve 적용# 각 색종이의 개수를 활용하여 원래 사이즈.. react에 typescript 적용하기 npx create-react-app . --template typescript혹은 yarn create react-app . --template typescript혹은 yarn create next-app . --typescript Next와 ts 둘다.그럼 아래와 같은 질문이 나온다 yarn run dev yarn add daisyuiyarn add zustandyarn add axios 0. 시간복잡도와 정렬 시간복잡도와 공간복잡도 백준에는 시간제한과 메모리제한이 있는데 시간제한은 시간복잡도, 메모리제한은 공간복잡도. 시간복잡도는 보통 "최악의" 시간복잡도 Big-O(빅오)로 나타낸다.ex) O(nlogn)빅 오 계산법은1. 알고리즘 자체의 시간복잡도를 학습하거나2. 계산하면 된다.n이라는 입력이 주어졌을 때 이를 활용해 문제를 풀 때 필요한 코드 실행 횟수를 f(n)이라 하자.이때 어떤 특정 n₁ 이후의 모든 n에 대해, (즉, n₁ ≤ n)f(n) ≤ c*g(n) 을 만족하도록 하는 (n₁, c) 쌍이 존재하면(c는 양의 상수)• 이때의 g(n)에 대해 O(g(n)) 이라고 쓸 수 있다쉽게 말해n개 데이터로 구성된 문제를 푸는 연산량이 f(n) 일 때,일반적으로 n이 증가하면 연산량 f(n)도 같이 증가.. 3. brute force 와 backtracking brute(무식한) force(힘)컴퓨터의 엄청난 연산 속도를 이용해 무식하게 문제를 푼다.문제의 정답의 범위를 a~b로 정해놓고, 이 안에 답이 존재할 때a~b에 속하는 모든 값을 전부 시도하며 정답을 찾는다.알고리즘에 대한 지식 없이 문제를 풀어본 적이 없다면 지금까지 브루트 포스로 문제를 풀었을 가능성이 높다. 완전 탐색이라고도 한다.아래 문제를 풀어보자.https://www.acmicpc.net/problem/2798n, m = map(int,input().split())cards = [i for i in map(int, input().split())]maxsum = 0for i in range(0, n): for j in range(i+1, n): for k in range(j.. 이전 1 2 3 4 5 다음