반응형

전체 글 118

알고리즘 인덱스 트리, 세그먼트 트리

인덱스 트리 개념설명 https://beenii.tistory.com/156 세그먼트 트리 개념설명 https://minusi.tistory.com/entry/%EC%84%B8%EA%B7%B8%EB%A8%BC%ED%8A%B8-%ED%8A%B8%EB%A6%ACSegment-Tree-Index-Tree 인덱스 트리 vs 세그먼트 트리 인덱스 트리: 리프노드를 모두 채워서 만듦. 특정 인덱스(node)로 지정 탐색이 가능. 업데이트도 지정 업데이트 가능(리프노드부터 업데이트 가능) 세그먼트 트리: 필요한 리프노드만 채움. 불완전 트리라서 특정 인덱스(node)로 지정 탐색이 어려움. 업데이트도 지정 업데이트가 불가능(루트노드부터 업데이트 필요) => 문제에서 인덱스가 주어지는 경우 인덱스 트리를 사용하는 것이..

알고리즘 2021.07.30

백준 12015 가장 긴 증가하는 부분 수열2 Java

테스트케이스 포함 BOJ 12015 가장 긴 증가하는 부분 수열2 https://www.acmicpc.net/problem/12015 이 문제는 Lower Bound 개념을 알고 있어야만 풀 수 있는 문제. Lower Bound 개념의 응용버전으로 0번째 자리에 비교 기준값인 0을 갖는다. 어려워서 많이 헤맸던지라 내가 만들거나 백준에서 수집한 테스트 케이스도 있다. (확장자가 없는 파일이라 raw로 봐야함. 이클립스로 열면 한글까지 확인 가능. 테스트 케이스 바로가기) 여러 풀이를 참고했는데 가장 도움이 될만한 글만 모아봤다. 이분탐색을 이용해야하는 이유: 작은 수부터 정렬하는 게 경우의 수를 높일 수 있다. https://guccin.tistory.com/81 Lower Bound 개념 https:/..

알고리즘 2021.07.29

C# Thread Dispatcher (Cross Thread 방지)

1. 많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다. 2. 다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다 전부 Cross Thread 문제로 메인쓰레드가 버튼A에 색상을 넣는 등의 작업을 하고 있을 때 서브쓰레드가 버튼A에 접근할 경우 충돌이 발생하는 문제 Dispatcher.CurrentDispatcher.InvokeAsync(delegate{ //To do }, DispatcherPriority.Loaded); Dispatcher.BeginInvoke(DispatcherPriority.Normal, delegate(){ // To do }); 나는 첫번째 방법을 사용했다. 메인쓰레드에서 파생된 쓰레드를 사용하는 방법이라고 ..

C#/WPF 2021.07.21

C# List<T> Sort 무명메소드

List list.Sort() 방식 중 IComparer 를 상속받아 만드는 무명메소드 방식 3. List.Sort(제네릭 IComparer) 1. List.Sort() 2. List.Sort(제네릭 Comparison) class Users{ int num; // 정렬기준 string name; } List u = new List(); u.add(new Users(1,"nameA"); u.add(new Users(2,"nameb"); u.add(new Users(3,"namec"); u.add(new Users(4,"named"); 3. List.Sort(제네릭 IComparer) 여기서 잠깐 사용할 건데 함수까지 만들긴 번거롭다 할 때 쓸 수 있는 방식 3.1. delegate 식 u.Sort(del..

C# 2021.07.21

백준 11053번 가장 긴 증가하는 부분 수열 Java

BOJ 11053번 가장 긴 증가하는 부분 수열 Java 가장 긴 증가하는 부분 수열의 개념을 먼저 알아야한다. (자세한설명 나무위키) 수열의 정렬을 건드리지 않고, 가장 적은 숫자를 제거해서 오름차순인 수열을 만들어내는 것이다. 백준은 테스트케이스가 다양한 상황을 고려하지 못해서 개인적으로 만들어봤다. 테스트케이스: {1 2 1 3 2 6 4 5} 🎈 1 2 1 3 2 6 4 5 🎈 1 2 1 3 2 6 4 5 이 두가지 경우 중 가장 긴 것을 선택해야한다. 🎈 1 2 3 6 🎈 1 2 3 4 5 이 둘은 각각 { 1 2 3 } + 6 과 { 1 2 3 } + 4 5 한 것중 긴 것을 택한 것. For 1 ~ N For 1~N-1 의 이중포문으로 시간복잡도는 O(NlogN) 이라고 한다.

알고리즘 2021.07.14

백준 10775 공항 Java

BOJ 10775번 공항 https://www.acmicpc.net/problem/10775 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.acmicpc.net 문제를 이해하는데 오래걸렸다.... ⭐⭐당신은 i번째 비행기를 1번부터 gi (1 ≤ gi ≤ G) 번째 게이트중 하나에 영구적으로 도킹하려 한다. 1~Gi번째까지 모두 가능하단 얘기다 gi = 2 일 경우 1,2번 게이트 모두 가능 gi = 3 일 경우 1,2,3번 게이트 모두 가능 작은 수는 공통이므로 큰 수부터 차례대로 게이트 사용한..

알고리즘 2021.07.10

Eclipse IDE 설치 ver.2021

Eclipse IDE for Java Developers 설치 zip 파일 Eclipse에서 설치파일을 exe로 제공하여 앱 내 링크로 설치할 수 있도록 제공합니다. 간혹 보안문제로 사내에서 설치할 수 없는 문제가 발생합니다. zip파일로 직접 설치할 수 있는 경로 안내해드립니다. 1. Eclipse IDE for Java Developers 설치경로 https://www.eclipse.org/downloads/packages/release/2020-12/r/eclipse-ide-java-developers Eclipse IDE for Java Developers | Eclipse Packages Package Description The essential tools for any Java develop..

Java Spring boot 2021.07.01

알고리즘 문제 핀볼

풀이: 이 문제의 특이점 1. 나중에 지나가는 공은 그 지점의 점수를 얻을 수 없다 = 나와 상대의 단계가 다르다 2. 공이 이동하다가 한 지점에 동시 도착하면 공이 부딪혀 게임판 밖으로 나가기 = 나와 상대의 단계가 같다 을 고려하기 위해서는 나와 리아의 단계를 확인해야한다. 동시 도착한 지점이 공통 조상이므로 공통조상을 구해야한다. LCA와 동일한 유형이므로 LCA에서 고려해야할 항목들이 동일하게 적용된다. LCA 바로가기 (2. 반복문(for/while) 하나에서 두 정점을 동시에 탐색해야 한다. 3. 각 정점별 단계를 미리 단계를 알아놔야한다.) 이 때, 특점 지점에서 이동하는 경로가 고정되어 있으므로 1부터 각지점까지의 누적합을 구해두면 이 문제의 특이점을 쉽게 해결할 수 있다. 공통조상까지의 ..

알고리즘 2021.06.13
반응형