분류 전체보기 123

[이분탐색] 중량 제한

중량제한 성공 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 8711 1856 1182 24.049% 문제 N(2≤N≤10,000)개의 섬으로 이루어진 나라가 있다. 이들 중 몇 개의 섬 사이에는 다리가 설치되어 있어서 차들이 다닐 수 있다. 영식 중공업에서는 두 개의 섬에 공장을 세워 두고 물품을 생산하는 일을 하고 있다. 물품을 생산하다 보면 공장에서 다른 공장으로 생산 중이던 물품을 수송해야 할 일이 생기곤 한다. 그런데 각각의 다리마다 중량제한이 있기 때문에 무턱대고 물품을 옮길 순 없다. 만약 중량제한을 초과하는 양의 물품이 다리를 지나게 되면 다리가 무너지게 된다. 한 번의 이동에서 옮길 수 있는 물품들의 중량의 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N, ..

C# 6.0 변경점

- C# 6.0에 대응되는 .NET Framework는 4.6 버전이다. 하지만 더 이상 .NET Framework에 종속적이지 않게 바뀌어서 독자적인 컴파일러 업그레이드가 가능하게 바뀌었으므로, C# 6.0 이상의 컴파일러를 .NET Framework 4.6 이하 환경에 설치해 실습하는 것이 가능하다. - 주요한 변경점은 "간편 표기법"을 제공하는 정도이다. [ 1. C# 3.0에 구현된 자동 구현 속성(Auto-implemented Properties)의 초기화 구문 추가 ] - 자동 구현 속성을 사용한 경우 초기값을 부여하려면 별도로 생성자 등의 메서드를 이용해 코드를 추가해야만 했다. 이렇게 구현할 경우, 설정자(set) 메서드를 반드시 구현해야하는 강제성을 수반하므로, 이를 원치 않는 경우에는 ..

Programming/C# 2019.06.29

C# 5.0 변경점 - 호출자 정보, 비동기 호출

- C# 5.0에 대응되는 닷넷 프레임워크는 4.5이고 주요 개발환경은 Visual Studio 2012, 2013이다. 닷넷 4.5는 윈도우 XP, 서버 2003을 지원하지 않는다는 점에 유의하자. 만약 개발한 프로그램이 XP/서버 2003에서 실행되어야 한다면 닷넷 4.0용 응용프로그램을 만들어야 한다. - 닷넷 프레임워크 4.5, 4.6, 4.7의 특징으로, 이것이 닷넷 4.0의 교체판이라는 점이다. 기존의 닷넷 프레임워크는 컴퓨터에 설치하면 "%windir%\Microsoft.NET\Framework" 폴더 아래에 각 버전 번호에 해당하는 폴더가 생성되는 식으로 설치 되었으나, 닷넷 4.5 ~ 4.7은 닷넷 4.0이 설치되어 있다면 덮어써버리고, 4.0이 설치되지 않았다면 새롭게 4.0 폴더에 설..

Programming/C# 2019.04.24

C# 4.0 변경점 - 선택적 매개변수/명명된 인자, dynamic 예약어

[ C# 4.0 ] - C# 4.0으로 만든 응용프로그램은 닷넷 프레임워크 4.0에서 실행된다. 닷넷 4.0이 기본 설치된 윈도우 운영체제는 없다.(확인 필요) - 닷넷 4.0은 CLR 버전이 올라갔다는데 의미가 있다. 닷넷 4.0은 새롭게 CLR 4.0에서 운영되며 GAC(Global Assembly Cache)도 분리됐다. 이전까지는 닷넷 1.0 ~ 3.5용으로 빌드되는 모든 어셈블리가 GAC에 추가되는 경우 단일하게 "%windir$\assembly"로 등록됐지만 닷넷 4.0 이상을 대상으로 빌드된 어셈블리는 Microsoft.NET 폴더 아래의 assembly 폴더로 바뀌었다. CLR 2.0 GAC 위치 : %windir%\assembly CLR 4.0 GAC 위치 : %windir%\Micros..

Programming/C# 2019.04.15

C# 3.0 변경점(3) - LINQ(Language Integrated Query)

[ LINQ ] - 데이터의 선택/열거 작업을 일관된 방법으로 다루기 위해 기존 문법을 확장시킨 것 - 전형적인 사용 예는 컬렉션을 대상으로 쿼리를 수행하는 것이다. using System; using System.Linq; using System.Collections.Generic; namespace ConsoleApp1 { class Person { public string Name { get; set; } public int Age { get; set; } public string Address { get; set; } public override string ToString() { return string.Format("{0}: {1} in {2}", Name, Age, Address); } } ..

Programming/C# 2019.04.09

C# 3.0 변경점(2) - 람다 식

[ 람다식 ] - 람다 대수의 형식을 C#에서 구현한 문법이다. 코드로서의 람다식(익명 메서드의 간편 표기 용도), 데이터로서의 람다 식(람다 식 자체가 데이터가 되어 구문 분석의 대상이 된다.) 으로 구분된다. [ 코드로서의 람다 식 ] - 익명 메서드의 구문을 더욱 단순화 할 수 있다. using System; using System.Threading; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Thread thread = new Thread( delegate (object obj) { Console.WriteLine("ThreadFunc in anonymous method called!"); }); // Thr..

Programming/C# 2019.04.04

C# 3.0 변경점(1) - var, 자동 구현 속성, 객체/컬렉션 초기화, 익명 타입, 확장 메서드

- C# 3.0으로 개발한 응용 프로그램은 .NET Framework 3.5이상에서 실행된다. [ var 예약어 ] - 타입 추론 기능이 추가되면서 메서드의 지역 변수 선언을 타입에 관계없이 var 예약어로 사용가능 - 컴파일 시점에 결정된다. using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace ConsoleApp1 { class Program { static void Main(string[] args) { List numbers1 = new List(new int[] { 1, 2, 3, 4, 5 }); List numbers2 = new List(new int[] { 6, 7..

Programming/C# 2019.04.03

C# 2.0 변경점(2) - yield return/break, partial class, Nullable, 익명 메서드, 정적 클래스

[ yield return/break ] - "yield return", "yield break" 예약어를 이용하면 기존의 IEnuerable, IEnumerator 인터페이스를 이용해 구현했던 열거 기능을 쉽게 구현할 수 있다. - IEnumerable을 이용해서 아래와 같이 무한 집합을 구현할 수 있다. using System; using System.Collections; using System.Collections.Generic; namespace ConsoleApp1 { // 1부터 자연수를 무한하게 출력(int 범위) public class NaturalNumber : IEnumerable { public IEnumerator GetEnumerator() { return new NaturalN..

Programming/C# 2019.03.31

C# 2.0 변경점(1) - 제네릭스(Generics), ?? 연산자

[ 제네릭스(Generics) ] - 기존 C# 1.0에서는 기본 형식으로 컬렉션 객체를 사용하는 경우 박싱/언박싱 문제가 발생한다. 즉, 값형식들을 참조형식인 object로 바꾸는 과정에서 힙에 object instance를 할당하게 되어 성능 저하 문제가 발생한다. - 이를 보완하기 위해, 제네릭스를 도입하였다. using System; namespace ConsoleApp1 { public class GenericsSample1 { T item; public GenericsSample1(T value) { item = value; } } // 형식 매개 변수의 이름은 아무렇게나 지정가능 public class GenericsSample2 { K item; public GenericsSample2(K..

Programming/C# 2019.03.31

리플렉션(Reflection)

[ 리플렉션 ] - C# 코드가 빌드되어 어셈블리에 포함되는 경우, 그에 대한 모든 정보를 조회할 수 있는 기술을 의미한다. - 리플렉션을 이용하면 현재 AppDomain의 이름과 그 안에 로드된 어셈블리 목록을 구할 수 있다.(AppDomain - CLR이 구현한 내부적인 격리공간. 일반적으로는 1개의 공유 AppDomain과 1개의 기본 AppDomain으로 구성됨) - 닷넷 프로그램이 실행되면 기본적으로 1개의 AppDomain이 있어야 하는데, 이를 "기본 응용프로그램 도메인(default AppDomain)" 이라 한다. using System; using System.Reflection; namespace ConsoleApp1 { class Program { static void Main(st..

Programming/C# 2019.03.12