C# (.NET) 알고리즘과 퀴즈
이 코너는 C#과 .NET을 이용한 프로그래밍 알고리즘 인터뷰 혹은 프로그래밍 관련 퀴즈를 담고 있습니다.
각 질문마다 서로 다른 여러 답변들이 나올 수 있으며, 더 좋은 알고리즘 혹은 해결 방식이 있을 수 있습니다.

레벨 필터링

번호퀴즈 질문레벨조회
1C#에서 사용되는 public, protected, private, internal의 차이점을 설명하십시오.14067
2박싱(Boxing)과 언박싱(Unboxing)에 대해 설명해 보시오.32832
3아래와 같은 Prototype을 갖는 public 델리게이트를 C#으로 적어 보시오. (1) 리턴 타입은 unsigned 16비트 정수이다 (2) 델리게이트명은 MyDelegate이다. (3) 2개의 파라미터가 있는데 첫번째는 문자열 배열,두번째는 IComparable 인터페이스이다. 21600
4System.Int32 타입으로 선언된 변수 A는 NULL을 가질 수 있습니까?11767
5GAC이란 무엇인가? 만약 동일한 DLL이 GAC에도 있고 현재 어플리케이션 디렉토리에도 있다면, 어플리케이션은 어떤 곳에 있는 DLL을 사용합니까?21469
6C#으로 다음과 같은 멤버들을 갖는 인터페이스를 선언하시오. (1) 인터페이스명은 IAction (2) ActionName이라는 문자열 속성을 갖는다. (3) Action이라는 메서드를 갖는데, 파라미터 id를 정수형으로 받아들인다. (4) Action 메서드가 끝날 때 불려지는 ActionComplete라는 이벤트를 갖는다. 31166
7텍스트 파일안에 1부터 100까지 정수가 한 라인씩 100줄 들어있다. 이 파일로부터 정수를 읽어 들여 전체 합계를 구하는 C# 프로그램을 작성하시오.21272
8인덱서(Indexer)를 가진 클래스를 쓰시오. 내부적으로 배열을 사용하는 인덱서를 간략히 구현해 보시오.31234
9C#에서 try..catch..finally 블럭을 설명하시오. 만약 try...finally만 있을 때, 에러가 발생하면 finally 블력은 실행되는가?11332
10System.String과 StringBuilder의 차이점은 무엇인지 설명하시오.11335
11.NET의 System.Array클래스에는 Array.Clone() 메서드와 Array.CopyTo() 메서드가 있는데, 이 둘의 차이점은 무엇인가?21572
12C++로 작성된 Native DLL에 있는 메서드를 C#에서 사용할 수 있는가? 만약 가능하다면, user32.dll의 EnableWindow() 함수를 C#에서 호출하는 코드를 작성하시오. (참조 : BOOL EnableWindow(HWND hWnd,BOOL bEnable); ) 41198
13추상클래스(Abstract Class)와 봉인클래스(Sealed Class)의 차이점을 설명하시오.11183
14.NET의 Debug클래스와 Trace클래스는 유사한 기능을 한다. 둘의 차이점은 무엇인가?21073
15C# 콘솔프로그램 실행시 전달된 모든 입력 파라미터들을 한 라인씩 콘솔에 다시 출력하는 프로그램을 작성하시오. 11137
16.NET에서는 어떻게 DLL HELL 문제를 해결하였는지 설명하시오.2920
17두개의 정수 a,b의 값을 서로 바꾸는 C# 코드를 쓰시오. (단, a,b이외의 임시 변수 사용 불가)31146
18아래 C#코드에서 Derived 클래스 객체를 생성하면 콘솔 화면에 어떻게 출력되는가? public class Base { public Base() { Console.WriteLine("A");} } public class Derived : Base { public Derived() { Console.WriteLine("B");} }3710
19Value Type과 Reference Type의 차이점은 무엇인가?3962
20변수 i=10, j=20, y=100 일때, 식 bool x=(i1883
21정수 i=6, j=8 일때, j+=i++ 을 실행한 후 i,j값은 무엇인가?1973
22정수 x에 곱셈연산자(*)를 쓰지 않고 16배로 만들기 위해서는 어떻게 할 수 있는가?11046
23모든 WinForm 컨트롤들은 InvokeRequired 라는 속성을 가지고 있다. 이 속성은 어떤 때 사용하는가?45396
24C++의 소멸자(Destructor)와 C#의 Destructor(Finalizer)의 차이점을 설명하시오.51162
25C#클래스에 파일 핸들이나 DB Connection같은 Unmanaged 리소스를 가지고 있을 때, 어떻게 이들 리소스를 해제할 수 있는가?5853
26C#의 using(..){...} 블럭은 언제 사용할 수 있는가?31077
271부터 5까지의 Random Number를 리턴하는 Rand5()를 이용하여, 1부터 7까지의 Random Number를 리턴하는 Rand7()함수를 작성하시오.4923
28정수 n을 이진 형식(binary format)으로 표현했을 때, 1인 bit가 몇 개인지를 계산하는 함수를 작성하시오.3749
29string 문자열을 정수로 변환하는 자신의 C# 함수를 작성하시오. (문자열은 숫자 혹은 - (마이너스)만을 갖는다고 가정)2857
30C#으로 피보나치 함수를 작성하시오.21352
31문자열을 입력받아 각 문자들을 일렬로 나열하는 순열(Permutation) 결과를 프린트하는 함수를 작성하시오 (C#)5761
32정수 N이 2의 N승 (2^n)인지를 검사하는 메서드를 작성하시오.2691
33정수N의 비트들이 앞에서부터 읽으나 뒤에서부터 읽으나 동일한 것을 회문(Palindrome)이라 한다. 회문을 판별하는 함수 IsPalindrome()를 작성하시오.3586
34두개의 정렬된 정수형 List를 파라미터로 받아들인 후, 이를 합쳐 정렬한 결과를 리턴하는 함수를 작성하시오.3597
351원, 10원, 50원, 100원짜리 동전이 제한없이 있다고 가정했을 때, 총 90원을 만드는 방법의 수를 구하는 함수를 작성하시오.5807
36정수 배열안에 동일한 숫자가 2번씩 들어 있고 하나의 숫자만이 쌍을 이루지 않고 들어 있다. 이 하나의 숫자를 구하는 함수를 작성하시오. (정수 배열 2, 4, 9, 5, 9, 5, 7, 4, 2 일때 답은 7)3601
37미리 정렬된 정수 배열에서 두개의 배열요소를 더하여 일정한 값을 갖는 요소 쌍을 구하시오. 예를 들어, 배열 { 1, 4, 6, 9, 10, 12, 16 } 에서 합이 16이 되는 쌍을 찾으시오.3586
38한 문자열 s1안에 다른 문자열 s2의 순열(Permutation)에 해당하는 문자열을 포함하고 있는지 체크하는 함수를 작성하시오.4562
39이진트리(Binary Tree)에서 두 노드를 모두 포함하는 최소 공통 조상 노드를 구하는 코드를 작성하시오.3741
40한 문자열(혹은 문자배열)의 문자들로 만들 수 있는 모든 조합(Combination)을 출력하시오. 예를 들어, ABC의 경우, A,B,C,AB,AC,BC,ABC 를 출력하게 되고, 문자의 순서는 무관.5775
41정수 배열을 입력받아 해당 배열의 임의의 범위에 있는 정수들을 더한 값이 최대가 되는 정수 최대 합계를 구하시오.4610
42클래식 하노이의 탑 문제에는 3개의 막대기가 있고, 한 막대기에 오름차순으로 N개의 디스크가 있다. 디스크가 있는 막대기에서 다른 하나의 막대기로 모두 디스크를 옮기는데, 한번에 1개씩 옮겨야 하고, 큰 디스크는 작은 디스크 위에 올려질 수 없다는 제약 조건이 있다. 스택을 사용하여, N개의 디스크를 첫번째 막대기에서 세번째 막대기로 옮기는 프로그램을 작성하시오.4638
43정렬되지 않은 정수 배열이 있을 때, 배열을 소트하지 않고 중간값(Median)을 구하는 코드를 작성하시오.4609
44그래프(Graph)의 노드들을 Depth-First 방식으로 출력하는 코드를 작성하시오. 방향 그래프가 순환(Cyclic)구조인지를 나타내는 메서드를 작성하시오.3769
45배열에서 한 배열요소가 절반이 넘는다고 전제했을 때, 그 요소를 구하는 코드를 작성하시오. (나머지 요소들은 중복될 수도 있고 그렇지 않을 수 있으며, 별도의 메모리 사용을 O(1)으로 제한)4624
46사칙연산으로 된 문자열 산술식(Expression)의 결과를 구하는 코드를 작성하시오. (괄호는 포함되지 않았다고 가정하며, 모두 정수라고 가정함)4654
47순환 자료구조를 사용하여 Queue를 구현하시오. 3862
48A,B,C,D,E 등 5개의 작업(Task)가 있다. A와 B는 C에 의존하여 C가 끝나야만 실행된다. C는 D와 E에 의존하고, D는 E에 의존한다. 상호의존성을 고려하여 작업 순서를 구하는 코드를 작성하시오. (결과 예: D E C A B)51062
49정수값을 갖는 Matrix (N x N 2차원 배열) 에서 특정 정수값이 존재하는지 체크하는 코드를 작성하시오. 단, Matrix는 왼쪽에서 오른쪽으로 오름차순으로 그리고 위에서 아래 방향으로 오름차순으로 정렬되어 있다.41279
50이진트리의 각 레벨(Level)별로 한 라인씩 노드값들을 출력하는 코드를 작성하시오. 31701
51히스토그램 그래프에서 최대 면적값을 구하는 코드를 작성하시오.41848
52정렬된 정수 배열에서 임의의 수 k를 찾는 코드를 작성하시오. 단, 배열의 처음이 소팅의 시작점이 아님 (즉, 배열은 { 17, 19, 21, 4, 8, 10, 11 }와 같이 중간부터 소트 가능)31207
53어느 회사의 주식가격이 정수 배열에 다음과 같이 저장되어 있다. (10, 15, 11, 8, 9, 20, 0, 19) 주식을 오직 한번만 사고 팔수 있다고 할 때, 최대 수익을 내는 요소구간과 최대값을 구하는 코드를 작성하시오.51653
54정수배열과 이진검색트리를 입력받아, 입력된 정수배열이 이진검색트리(BST)를 PostOrder로 읽은 값과 동일한 지를 나타내는 코드를 작성하시오.31207
55이진트리의 각 레벨별 좌우 노드가 반대 방향으로 되도록 트리를 재구성하는 코드를 작성하시오. 즉, 첫번째 레벨이 4, 두번째 레벨이 2, 6, 세번째 레벨이 1,3,5,7 일때, 변형된 트리는 각 레벨별로 4, (6,2), (7,5,3,1)과 같이 된다.31346
56소팅되지 않은 정수 배열이 있을 때, 이 배열에서 계속 숫자가 증가되도록 배열요소를 선별했을 때, 이 선별 배열의 최대 길이는 얼마인가를 계산하는 코드를 작성하시오. 숫자 증가는 연속된 배열 요소에 있지 않아도 된다. 예를 들어, 배열 {2, 6, 4, 5, 1, 3}에 대해 최대 증가 시퀀스는 {2,4,5}로 답은 3이 된다. 41095
57단일 링크드 리스트 (Singly Linked List)를 역방향으로 변경하는 C# 코드를 작성하시오. 31343
58스택의 최소값을 리턴하는 함수 Min()을 갖는 커스텀 스택 클래스를 C# 코드를 작성하시오 (단, 이 스택의 Push(), Pop(), Min() 메서드의 Time Complexity는 모두 O(1) 이다)31295
59문자배열에서 중복되지 않는 첫 문자를 리턴하는 함수를 작성하시오. 예를 들어, 입력 문자배열이 abcabdefe 일 때, 중복되지 않는 첫 문자 c 를 리턴함.21198
60Stream으로부터 연속적으로 데이타를 받아 들일 때, 현재 싯점까지의 데이타 중 중간값(Median)을 출력하는 코드를 작성하시오. (만약 데이타 수가 짝수이면 두 중간 숫자의 평균을 중간값으로 정함)41414
61이진트리(Binary Tree)를 입력받아 그 트리가 이진검색트리(Binary Search Tree)인지를 체크하는 코드를 작성하시오.31464
621부터 100만까지의 숫자가 들어있는 배열 A 에 한 숫자만 중복되어 들어 있다(배열 A 크기 = 백만+1). 이 중복된 숫자를 구하는 함수를 작성하시오. 32225
63개미수열(Look and Say Sequence)은 연속적으로 나온 숫자의 갯수를 해당숫자 바로 뒤에 붙여 열거한다. 예를 들어 입력이 1121인 경우 1이 2개 (12) 2가 1개 (21) 그리고 1이 1개 (11) 즉 122111 이 출력된다. 1부터 시작하여 10개의 개미수열을 구하는 프로그램을 작성하라. (예상결과: 1 / 11 / 12 / 1121 / 122111 / 112213 / 12221131 ...)21919
등록건수: 63


One day during his tenure as a professor, Albert Einstein was visited by a student. "The questions on this year's exam are the same as last year's!," the young man exclaimed. "Yes," Einstein answered, "but this year all the answers are different."