Binary Search (이진탐색)
·
📚 Computer Science/Algorithms
정렬된 리스트의 범위를 반씩 나누어 탐색을 진행하는 방법 정렬된 리스트에서만 사용가능 속도가 빠름 상황 속도 최적 O(1) 보통 O(logn) 최악 O(logn) 동작 배열의 중간값 설정 중간값과 검색값 비교 검색값과 같은 경우 - 탐색완료 검색값이 중간값보다 큰 경우 - low를 중간값+1 로 조정 검색값이 중간값보다 작은 경우 - high를 중간값-1 로 조정 low가 high보다 작거나 같은경우까지 반복(값을 찾은 경우가 아니라면) 이진탐색 구현 def binarySearch(data, num): low = 0 high = len(data) - 1 while(low data[mid]: low = mid + 1 else : high = mid - 1 return False 이진탐색 사용 예시 코드 n..
스터디) 두번째 스터디 피드백 및 질문 정리내용
·
💻 Programming Language/C#
sealed 키워드를 메소드에 사용! 부모클래스에서 오작동을 하게끔 하는 자원을 자식클래스에서 건드리면 안되는 경우 메소드에 sealed 한정자를 사용해서 제한할 수 있다. class Parent { public int num; public int count; public Parent(int num) { this.num = num; this.count = 0; Console.WriteLine("Parent 생성자"); } public virtual void addCount() { } public void showInfo() { Console.WriteLine("Num : {0}, Count : {1}", this.num, this.count); } } class Counter : Parent { publ..
스터디) 첫번째 스터디 피드백 및 질문 정리내용
·
💻 Programming Language/C#
1. 참조 형식을 메소드의 매개변수로 넘겨 할당 후 변화를 주면 어떻게 될까? class MyField { public int field1; public int field2; } class AssignRefType { public static void addVal(MyField obj) { MyField temp = obj; temp.field1++; temp.field2++; } public static void subVal(MyField obj) { MyField temp = obj; temp.field1--; temp.field2--; } static void Main(string[] args) { MyField mf = new MyField() { field1 = 1, field2 = 2 }; M..
43. 스레드와 태스크
·
💻 Programming Language/C#
프로세스(Process) : 실행파일이 실행되어 메모리에 적재된 인스턴스 프로세스는 하나 이상의 스레드(Thread)로 구성된다. 스레드는 운영체제가 CPU를 할당하는 기본단위이며, 프로세스가 밧줄이라면, 스레드는 밧줄을 이루고 있는 실이라고 할 수 있다. 멀티 스레드(Multi-Thread)를 이용했을때의 장단점. 장점 사용자 대화형 프로그램에서(콘솔 프로그램과 GUI프로그램 모두) 멀티스레드를 이용하면 응답성을 높일 수 있다는 점을 꼽을 수 있다. 예를 들어 우리가 만든 프로그램을 파일을 복사하는데, 복사할 피일이 너무 커서 소요시간이 30분정도 걸린다고 가정해보자. 이 때 프로그램을 단일 스레드로 만든다면 프로그램이 파일을 복사하는 동안 사용자가 취소 명령을 내리고 싶어도 프로그램이 사용자에게 반응..
42. LINQ 세부 문법
·
💻 Programming Language/C#
두 개의 from 절을 이용한 LINQ 문 using System.Collections; namespace LINQEx { class MemberScore { public string Name { get; set; } public int[] Score { get; set; } } class Program { static void Main(string[] args) { MemberScore[] ms = { new MemberScore(){Name="홍길동",Score=new int[]{30, 42, 67 } }, new MemberScore(){Name="청길동",Score=new int[]{88, 45, 87 } }, new MemberScore(){Name="녹길동",Score=new int[]{55,..