전체 글 147

MVC 패턴 간단 이해 [컴공과고씨]

mvc패턴을 적용해보려고 공부한 내용을 최대한 쉽게 정리해보려고 함 MVC 패턴이란? model, view, controller의 약자임 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 3가지 역할로 구분한 것 각각에 대한 간단 설명 모델 - 애플리케이션의 정보인 데이터가 있음 - 백그라운드에서 동작하는 비즈니스 로직(데이터) 처리 컨트롤러 - 컨트롤러를 조작해서 model에 있는 데이터를 가져와 수정 - 사용자의 입력 처리와 흐름 제어, model과 view를 연결 시켜 주는 역할 뷰 - 컨트롤러가 가져온 데이터를 바탕으로 사용자에게 시각적으로 보여줌 - 정보를 화면으로 보여줌 좀 더 자세히 들어가자 각 파트마다 규칙이 있음 모델의 규칙 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 ..

백엔드 2023.10.23

초보자도 쉬운 워드프레스 도메인 주소 설정하는법 [컴공과고씨]

자 저번글에서 클라우드웨이에서 서버, 워드프레스까지 설치했죠? 안했다면 https://hagisilecoding.tistory.com/159 집으로 따지면 땅사고 집까지 지은거죠. 이제는 주소를 등록해주어야 합니다. 이번글도 겁나 쉽게 설명드릴려고 노력했어요 바로 가시죠. *가비아는 우리나라 1등 도메인업체여서 사용했음 1. 먼저 가비아 접속 https://www.gabia.com 웹을 넘어 클라우드로. 가비아 그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브 www.gabia.com 2. 오른쪽 위에 로그인 클릭하면 구글, 네이버, 카카오로 쉽게 가입가능해 회원가입 ㄱㄱ해 3. 자 그다음 로그인을 하면 이런 페이지가 떠 자 저 www.뒤에 원하는 주소를 적어주는 거지 이런식으로 그럼 이런식으로 가능한 ..

디지털노마드 2023.06.13

(쿠폰있음) 워드프레스(wordpress), 클라우드웨이즈(cloudways) 시작, 설치하는법 - [컴공과고씨]

뭐 워드프레스로 6억을 벌었다 이런 말들이 생기고 있죠. 그래서 진짜 쉽고 간결하게 워드프레스 제작 설명할게요. 그냥 따라만 하면 됩니다. 할아버지, 할머니도 할 수 있도록 설명했어요. 정말 쉽고 간단하게 완전 초보 코딩에 코짜도 몰라도 구축할 수 있도록 설명할게욥 글에 중간중간에 *로 추가 설명 부분 달아놓는거는 이해하고 싶은 분들 읽고 아니면 넘어가도 무방합니다. *자 일단 자신만의 홈페이지를 만들려고 워드프레스를 하는 것입니다. 그렇다면 워드프레스가 뭐냐? 홈페이지를 만드는 것은 집을 짓는 것이라고 생각하면 편합니다. 집을 지을라면 땅이 있어야죠? 땅이 서버라고 생각하면 됩니다. 그리고 이 위에 집을 짓잖아요. 그게 서버에 워드프레스를 설치하는 것입니다. 즉 서버는 클라우드 웨이즈, 워드프레스가 집..

디지털노마드 2023.06.13

[자료구조] Trie (트라이) c++ 구현, 설명

Trie(트라이) 트라이라는 것은 문자열 집합을 관리하는 트리이다. 하나의 간선은 하나의 알파벳을 나타내고, 트리를 내려가면서 만나는 간선의 알파벳을 모두 이어주면 원래의 문자열을 얻을 수 있다. *그림이 좀 잘못되었는데 문자열 집합 중 abd가 아니라 ad가 맞음. 여기서 T라는 것은 문자열의 끝을 표시하는 것으로 T까지 경로를 이어주면 원래 문자열이 나오게 되는것이다. 그래서 트라이에 들어있는 문자열은 abc, ad, e,eg, f 가 된다. 이러한 트라이는 문자열의 삽입/ 삭제/탐색의 시간복잡도는 O(문자열의 길이)로 해시와 같은 복잡도로 빠른 편에 속한다. 또한 트라이를 응용하여 해시로는 할 수 없는 것들을 할 수 있다. 에를 들면 접두사 찾기 등등. 또한 정렬의 효과를 낼 수도 있다. 구현한 코..

[자료구조] Segment Tree(세그먼트 트리) c++ 구현, 설명

세그먼트 트리 세그먼트 트리는 이진 트리로 구성하면됨. 구간의 길이가 1인 구간은 리프 노드가 되고, 나머지 노드는 자식 노드를 합친 구간 합을 들고 있음. 배열의 길이가 N이라면 세그먼트 트리의 노드 개수는 2N - 1 개가 됨. 루트를 배열 1번 부터 시작 한다고 하면 필요한 배열의 길이는 2N이 된다. Init 처음 세그먼트 배열을 초기화 할 때는 N부터 시작해서 길이가 1인 구간을 N개 만큼 채워넣어준다. 그 후 N-1부터 자식노드의 두 개를 합쳐서 구간의 합을 구하면서 위로 올라가면 위과 같은 그림이 나오게 된다. Update 만약 중간에 배열의 값이 바뀐다면 노드의 값을 바꿔준 후 부모쪽으로 올라가며 다시 구간 합을 구해서 넣어주면 된다. [l,r) 구간 합 찾기 구간 합 찾는 과정은 구간의 ..

[자료구조] 힙(Heap), 우선순위 큐(priority queue) c++ 구현, 설명

힙은 우선순위 큐를 위해 만들어진 자료구조임. 우선순위큐란 완전이진트리인데 부모가 가지는 값은 자식보다 무조건 큰 값을 가지고 있음.( 혹은 무조건 작은 값). 큰 값을 가지는 것을 최대 힙, 작은 값을 가지는 것을 최소 힙이라고 함. 그래서 루트에는 항상 제일 큰 값 혹은 제일 작은 값을 가지고 있는 것이 특징입니다. 기본적으로 구현 같은 경우 배열을 사용하거나 linked를 사용할 수 있습니다. 저는 배열을 사용하여 구현했습니다. 인덱스 루트 노드의 인덱스를 1로 시작하게 하면 (0번 노드는 버림) 부모 인덱스 = (자식 인덱스) / 2 왼쪽 자식 인덱스 = (부모 인덱스) * 2 오른쪽 자식 인덱스 = (부모 인덱스) * 2 이렇게 나타 낼 수 있겠죠. 위 그림에서 99는 인덱스 1, 50은 2, ..

[자료구조] Binary Search Tree c++ 구현 [컴공과고씨]

트리 트리는 사이클이 없는 연결 그래프로 각 노드가 하나의 부모 노드와 간선으로 연결되어있는 구조이다. 많은 트리가 있는데 그중 binary search tree에 대해서 알아보자. 일단 트리에 구조를 보면 이런 식으로 되어있다. 자신보다 바로 위에 있는 노드를 부모 노드 parent node 라 하고 그 아래에 있는 노드를 child node라고 한다. 맨 위의 노드를 root node라 하고 이 곳부터 level 0 이고 그 밑에 줄이 level 1 이런식으로 내려간다. 지금 예는 level 2 트리인 것이다. leaf node는 노드가 없는 노드를 말합니다. ancestor(조상)은 부모 노드로만 이동해서 갈 수 있는 노드들이고 descendent(자손)은 자식 노드로만 이동해서 갈 수 있는 노드들..

DP - TSP(Traveling Salesman Problem) 최소 여행 경비 c++ [컴공과고씨]

TSP 한 정점에서 출발하여 다른 정점을 각각 한번씩만 방문하고 다시 처음 정점으로 돌아오는 가장 짧은 경로를 결정하는 것. *음이 아닌 가중치가 있는, 방향성 그래프를 대상으로 함. 여행을 다 한 후 정점 1로 돌아오는 것으로 가정했을 때 아이디어는 dp[i][A]를 i에서 A에 속한 각 정점을 한번씩 거쳐서 정점 1로 가는 최단 경로의 길이라고 정의하는 것이다. 자 그럼 dp[1][A-{1}] = min(w[1][j] + dp[j][v-{1,j}) j는 2부터 나머지 정점 , w[i][j]는 i부터 j까지 거리. 무슨 말이냐면 정점 1에서 1를 제외하고 나머지 정점을 돌고 1로 돌아오는 것은? 1에서 다음 정점으로 이동한 가중치 + 다음 이동한 정점에서 출발하여 정점 1과 자신을 제외한 정점을 여행한..

DP - LIS(Longest Increasing Subsequence) c++ [컴공과고씨]

최장 증가 수열의 길이(LIS) 다음과 같은 수열이 있을 때 순서를 유지하면서 크기가 점진적으로 커지는 가장 긴 부분의 수열의 길이를 말함. -> 3,2,6,4,5,1 일 경우는 2,4,5 | 3,5,6 => 즉, 3 이다. 이걸 구하는 알고리즘이 LIS이다. Brute-force 방법으로 푼다면 길이가 0 일때 모든 부분집합. 1일 때 2일 때 ... 쭉 불가능 할 때 까지 가는 것이다. 이 경우 같은 경우 부분집합의 총 개수가 2^N이기 때문에 O(2^n)이 나오게 된다. Dynamic programming(DP) 숫자열 - a,b,c,d,e .... LIS[i] : a,b,c,d,e에서 가장 긴 부분 수열의 길이라 하면 1번 : LIS(i)가 i번째 원소를 포함하지 않는다면, LIS(i) = LIS..

백준 1753 최단경로 c++ [컴공과고씨]

https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 문제 간단 정리 정점이 주어질 때 시작점이 주어지고 그 시작점으로 부터 각 정점의 최단거리를 출력하는 문제. 문제 해결 방법 다익스트라 알고리즘을 사용하여 쉽게 풀 수 있는 문제이다. 다익스트라를 모른다면 https://hagisilecoding.tistory.com/134 여기서 보고 오시면 쉽게 풀 수 있습니다. 전체 코드 1 2 3 4 5 6 7 8 9 ..

알고리즘/백준 2023.01.23