프로그래밍 언어
[C#] 7.0 튜플 (Tuple)
개념C# 7 이전 버전에서는 메서드에서 하나의 값만을 리턴할 수 있었지만, C# 7부터는 튜플(Tuple)을 사용하여 메서드로부터 복수 개의 값들을 리턴할 수 있게 되었다. 메서드 원형을 정의할 때 리턴타입이 복수 개이므로 튜플 리턴 타입(tuple return type) 표현식을 사용하게 되는데, 이는 괄호 ( ) 안에 여러 리턴타입을 순서대로 나열하면 된다. 예를 들어, int 2개와 double 하나를 리턴할 경우 (int, int, double)과 같이 표현할 수 있으며, 더 나아가 편의를 위해 각 리턴타입마다 이름을 지정할 수도 있다. 예를 들어 (int count, int sum, double average)와 같이 작성이 가능하다.(double, int) t1 = (4.5, 3);Consol..
[C#] switch문에 추가된 기능 (버전 7~9)
기본형)int flag = 3; switch (flag) {case 1: DoFunc1(); break;case 2: DoFunc2(); break;default: DoFunc3(); break; }C# 7.0, switch문의 패턴 매칭switch case 문이 패턴 매칭 식을 흡수한다, 원래 switch 문의 조건식에는 값 형식의 식들만 들어갈 수 있었지만 클래스 인스턴스도 들어갈 수 있고 case 문에는 패턴 매칭식을 넣을 수가 있다.using System; public class Program { public static void Main() { object data = 5; // object data = "STRING"; // object..
[Java] switch문
변경 전과 후 특징 비교변경 전)C, C++에서 사용하는 형태의 Switch 형식을 따른다.불필요한 반복코드 존재한다.다수의 case와 break가 존재한다.개발자의 실수로 break를 빼먹을 경우 다음 분기로 넘어가게 됨.변경 후)Switch 내에서 라벨이 일치하는 경우, case -> A와 같은 형식으로 표현이 가능하다.단일 수행 또는 블록 수행이 가능하다.Switch 블록 내에서 계산된 값을 반환하는 yeild라는 키워드가 생겼다.여러 조건을 쉼표로 구분하여 한 라인으로 처리할 수 있음.테스트 클래스 정의enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; }코드로 변경사항 살펴보기간단한 코드 비교를 통해 새로워진 Sw..
[Python] None
None값이 없음, 알 수 없음 정도의 의미를 가진다. 정수 0이나 빈 문자열 ""과는 다르다.score_100 = 100score_0 = 0score_none = Noneprint(score_none)// NoneNone과 NoneTypeNone은 NoneType 타입의 객체다print(type(None))// int, str과 같은 일반적인 타입들과 다르게, NoneType은 빌트인에 존재하지 않는다.print(int)print(int)print(NoneType)// 결과Traceback (most recent call last): File "example.py", line 3, in print(NoneType)NameError: name 'NoneType' is not defined Py..
[Python] 인덱싱과 슬라이싱 : 음수 인덱스
문자열과 리스트는 Iterable (순회할 수 있는) 객체다. 문자열은 여러 개의 문자들을 모아 놓은 배열이고, 리스트는 다양한 값을 모아 놓은 배열이다. 이 두 자료형의 원소에는 위의 그림처럼 인덱스(순서)가 있다. 편의 상 왼쪽에서부터 오른쪽으로 향하는 방향을 정순(정방향), 오른쪽에서부터 왼쪽으로 향하는 방향을 역순(역방향)이라 하면 인덱스에는 대소 관계가 있는데 정순이라면 왼쪽의 인덱스일수록 작은 값입니다. 역순이라면 오른쪽의 인덱스일수록 작은 값이다. 파이썬에서 인덱싱과 슬라이싱을 잘 활용하시려면 인덱스의 대소 관계를 정확히 알아야 한다.인덱싱 (Indexing)과 슬라이싱(Slicing)인덱싱(Indexing)은 문자열이나 리스트와 같은 컬렉션 자료형에서 기준값으로 개별 원소에 접근하는 방법이..

[C#] default와 new() 제약 조건 사용하기
new와 defaultnew는 generic 함수의 제약 조건이다. 해당 제약 조건을 걸면 generic 함수 내에서 new T()와 같은 코드를 사용할 수 있다. 이 제약 조건을 걸었을 경우 struct와 enum은 항상 사용 가능하고, class는 구현에 따라 달라지게 된다. default는 C#의 기본 키워드로 제약 조건이 필요하지 않고, 다른 많은 곳에서도 사용할 수 있는 기능이다. default를 각 타입에 사용할 경우 아래 표와 같은 값이 생성된다.classclass는 참조 타입(reference type)이기 때문에 null을 허용하기에 default를 사용했을 때 값은 항상 null이 된다.new의 경우 생성자를 하나도 만들지 않은 상태라면, 항상 사용이 가능하다(기본 생성자). 반대로 ..

[C#] Attribute : Obsolete - 더 이상 사용하지 않거나 그럴 예정인 코드에 대해서
class TestClass{ [Obsolete] public void Function1() { }} 더 이상 사용하지 않거나 그럴 예정인 클래스나 함수, 변수의 앞에 [Obsolete] 어트리뷰트를 붙여주면 된다. 그렇게 하면 해당 함수를 호출할 때 초록색 밑줄과 함께 더 이상 사용하지 않는 함수라는 경고가 뜬다. 그리고 툴팁에서는 함수 앞에 [deprecated]가 붙게 된다.이 [Obsolete]는 세 가지 방식의 오버로딩을 지원한다.class TestClass{ [Obsolete] public void Function1() { } [Obsolete("Not use anymore.")] public void Function2() { }..
[C++] cin.ignore와 버퍼에 대한 이해
cincin은 character input의 약자로, 버퍼의 값을 읽어온다. 만약 버퍼에 읽어올 값이 없으면 표준 입력 스트림으로부터 입력을 받아와 버퍼에 저장하고나서 버퍼의 값을 읽어온다.입력을 받는다는 것이 아닌 버퍼를 먼저 읽으려고 한다는 관점이 중요하다. (버퍼는 자료구조 queue와 유사하다. 선입선출로 작동한다.) cin >>은 공백 (스페이스, 탭, 줄바꿈) 문자를 기준으로 끊어서 읽어오고, 공백문자는 무시한다#include using namespace std;int main() { char name[100]; cout > name; cout 0. 버퍼에 다음과 같이 저장된다. [ j ] [ o ] [ h ] [ n ] [ ' ' ] [ n ] [ a ] [ n ] [ a ]..

[C++] std::map을 value 기준으로 정렬하기
std::map 정렬map의 자료구조는 기본적으로 key 값 기준 오름차순 기반 정렬을 하고 있다template , // map::key_compare class Alloc = allocator > // map::allocator_type > class map; 만약 우리가 key 값 기준 내림차순으로 변경하기 위해선 3번째 인자에 greater()를 넣어주면 된다// 키, 데이터, comparemap> m;value 값 기반 정렬하기map에는 정렬 함수가 따로 없어서, vector를 활용해야한다. 구체적으로, map은 tree형태로 되어져있고, tree 형태를 만드는 과정에서 key을 기준으로 정렬을 한다. 완성된 tree를 ..
[C++] set, map 정렬 기준 바꾸는 방법
C++ STL에서 제공하는 set, map, multiset, multimap 등의 컨테이너는 자동으로 데이터를 정렬된 상태로 유지시켜 준다. 그래서 이러한 컨테이너에 데이터를 넣고 그대로 출력하기만 하면 오름차순으로 정렬된 데이터를 얻을 수 있지만 가끔은 내림차순 정렬이 필요하거나 내가 원하는 방식대로 정렬되어야 하는 경우도 생긴다. set의 템플릿 (template)을 살펴보면 다음과 같이 되어 있다template , class _Alloc = allocator> _Kty 부분은 흔히 사용하는 키 타입을 설정하는 부분이다. 우리가 봐야 할 부분은 _Pr이다 기본 값으로 less가 설정된 모습을 볼 수 있는데 이 less는 아래와 같이 정의되어 있다template struct less { _CXX..