반응형

분류 전체보기 110

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

인덱스 트리 개념설명 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
반응형