728x90

전체 글 161

[알고리즘]백준 4195: 친구 네트워크

해결방법서로소 집합 / 랭크 기반 유니온(Rank Based Union)rank → 친구 네크워크의 크기를 나타내며, 친구 네트워크의 큰 쪽에 편입시킨다.rank 기반 union을 사용하므로 union시 O(1) → 상수시간에 가깝게 동작한다.따라서 O(N)=O(F)의 시간복잡도에 문제를 해결할 수 있다. 코드import java.util.*;import java.io.*;// 1668ms// union 연산에서 랭크 기반 union을 사용하므로 O(1)에 가깝게 동작한다,// 따라서 대략 O(N)=O(F)public class Main_4195_G2_친구네트워크_서로소집합 { static final int N = 200005; static int F; // F: 친구 관계의 수 stat..

알고리즘/백준 2024.08.12

[공통프로젝트]5주차: React Openvidu 구현

*Openvidu v2 기준📌Openvidu의 구성요소Openvidu의 구성요소는 크게 Openvidu Server, Application Server(BE), Application Client(FE)로 구분할 수 있다.Openvidu Server: 실시간 오디오 및 비디오 스트리밍에 필요한 모든 인프라를 제공한다. 화상회의 서비스 개발을 위해서 단순히 배포만 하면 된다.Application Server(BE): client의 요청에 따라 openvidu server와 상호작용하며 세션을 생성하고 관리한다. Openvidu Server에서 제공하는 REST API를 통해서 Openvidu Server와 통신한다.Application Client(FE): 사용자와 직접 상호작용하는 부분으로, Openvi..

💻웹(Web) 2024.08.11

[알고리즘]백준 1043: 거짓말

해결방법서로소 집합(Disjoint Set)서로소 집합이란 집합들 간의 교집합이 없는, 즉 서로 겹치는 원소가 없는 집합들의 모음을 관리하는 자료구조이다. 집합 간의 연결 여부 확인시 서로소 집합을 활용할 수 있다.두 노드의 대표자가 같다면 연결되어 있음대표자가 다르면 연결되어 있지 않다.로직서로소 집합을 활용해 서로 연결된 파티를 구한다.각 파티의 대표자를 구한다.(대표자가 같다면 연결되어 있고, 대표자가 다르면 연결되어 있지 않다.)과장된 이야기를 하면 안되는 파티의 대표자들을 구한다.전체 파티의 수 - 과장된 이야기를 하면 안되는 파티 수union-find 시 선형으로 연결된 경우(최악의 경우) 시간복잡도가 O(M)이므로 시간복잡도는 대략 O(NM)이다. 코드import java.util.*;imp..

알고리즘/백준 2024.08.11

[알고리즘]백준 1253: 좋다

해결방법수를 순서대로 순회하면서 투 포인터로 서로 다른 두 수의 합으로 나타낼 수 있는 수의 개수를 구한다. ⇒ O(N^2) (N≤2000)*수의 위치가 다르면 값이 같아도 다른 수이다. 코드import java.util.*;import java.io.*;// O(N^2)public class Main_1253_G4_좋다_투포인터 { static int N; static int[] numbers; public static void main(String[] args) throws IOException{ // 1. 입력 및 초기화 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..

알고리즘/백준 2024.08.10

[알고리즘]백준 2467: 용액

해결방법2개의 용액을 골라야한다. 일반적으로 조합을 구하기 위해서는 O(2^N)의 시간복잡도를 가진다. 위 문제의 경우 2≤N≤100000이므로 적용불가능하다. (대략 N이 10을 넘어가면 불가능)투포인터로 접근한다.left+right의 절댓값이 answer보다 작다면 answer 갱신(left와 right 위치 저장)left와 right의 용액을 더했을 때 양수이면 → right-1left와 right의 용액을 더했을 때 음수이면 → left+1left결론적으로 투포인터로 O(N)의 시간복잡도로 문제를 해결할 수 있다.  코드import java.util.*;import java.io.*;// 308ms, 투포인터, O(N)public class Main_2467_G5_용액_투포인터 { stati..

알고리즘/백준 2024.08.07

[알고리즘]백준 2206: 벽 부수고 이동하기

해결방법최단 경로이므로 BFS로 접근한다.단, 이동하는 도중에 한개의 벽을 부수고 이동할 수 있다는 변수가 있다. 벽의 위치를 저장하고 먼저 벽을 부수고 출발하면 최악의 경우 시간복잡도가 O((N*M)^2)로 시간초과가 발생한다.따라서 3차원 배열로 거리/방문체크를 해야한다. 3차원 배열인 이유는 map 자체가 2차원 배열이고 벽을 부수지 않은 경우/벽을 부순경우를 나눠야 한다. 벽을 부수고 간 것이 먼저 도착하는 경우 벽을 부수지 않고 도착한 것이 방문처리되어 통과되지 못할 수 있기 때문이다. 코드1(거리 비교)import java.util.*;import java.io.*;public class Main_2206_G3_벽부수고이동하기_거리체크 { static int N,M; // N(1 ≤ N ..

알고리즘/백준 2024.08.06

[알고리즘]백준 2304: 창고다각형, 백준 14719번: 빗물

해결방법기둥을 정렬한 후 가장 높은 기둥을 알아낸다.왼쪽 ~ 가장 높은 기둥까지 면적을 더한다. 왼쪽에서 가장 높은 기둥을 기준으로 가장 높은 기둥이 갱신될 때마다 면적을 더한다.오른쪽 ~ 가장 높은 기둥까지 위와 같은 로직을 반복한다.⇒ 정렬에 O(Nlog), 면적을 더하는데 O(N)의 시간복잡도가 소요된다. 코드import java.util.*;import java.io.*;// 112mspublic class Main_2304_S2_창고다각형 { static int N; static Tower[] tower; static class Tower{ int w, h; public Tower(int w, int h){ this.w=w; ..

알고리즘/백준 2024.08.05

[React]초기세팅

초기 세팅1. Node.js 설치React 프로젝트를 시작하기 전에 Node.js가 설치되어 있어야 합니다. Node.js는 공식 웹사이트에서 다운로드할 수 있습니다. 2. Create React App 설치터미널을 열고 다음 명령어를 입력하여 Create React App을 전역으로 설치합니다. (이미 설치되어 있다면 이 단계는 건너뛸 수 있습니다.)npm install -g create-react-app 3-1. 새 React 프로젝트 생성(CRA)프로젝트를 생성하고자 하는 디렉토리로 이동한 다음, 다음 명령어를 실행하여 새 React 프로젝트를 생성합니다.npx create-react-app my-app여기서 my-app은 프로젝트의 이름으로, 원하는 이름으로 변경할 수 있습니다.3-2. 새 Rea..

💻웹(Web) 2024.07.18

MVC, MVVM, Flux 패턴

MVC, MVVM, Flux🔎MVC(Model-View-Controller)구성요소Model: 데이터 및 비즈니스 로직 담당View: UI를 담당Controller: 사용자 입력을 받아 Model을 update하고, View를 갱신한다.작동방식controller를 통해 사용자 입력(action)을 받는다.controller는 action에 따라 model을 update한다.controller는 model을 나타낼 view를 선택한다.view는 model을 이용하여 화면을 갱신한다.특징view는 controller와 상호작용하며, controller는 model을 update하고 view를 갱신한다. 🔎MVVM(Model-View-View Model)구성요소Model: 데이터 및 비즈니스 로직을 담당V..

💻웹(Web) 2024.07.15

[알고리즘]백준 2493: 탑

스택해당 유형의 문제는 스택 자료구조를 사용하여 O(N)으로 문제를 해결할 수 있다.스택에는 항상 “현재 인덱스보다 높은 탑들의 인덱스들”만 들어있다. 1부터 N까지의 인덱스를 순회하면서, 현재 인덱스보다 낮은 탑들의 인덱스를 스택에서 제거한다. 스택의 최상위에는 레이저가 처음으로 도달하는 탑의 인덱스가 항상 위치하게 된다.Stack stack = new Stack();for(int i=1; i 코드import java.io.*;import java.util.*;//716ms, O(N)public class Main { static int N; static int[] tower; public static void main(String[] args) throws IOException{ ..

알고리즘/백준 2024.07.14
728x90