본문 바로가기

Programming

(7)
[C#]배열 뒤에서부터 배열 요소에 접근(Index from end operator) C# 배열 뒤에서부터 배열 요소에 접근 그동안 C#에서 배열에 뒤에서 접근할때면 자체 배열을 Array.Reverse()를 이용해 뒤집은 다음에 접근하고 있었다. 파이썬이나 자바스크립트는 인덱스 값을 음수로 설정해서 접근이 가능했지만 C#은 음수로 접근하는걸 당연히 지원하지 않았고 대신 동일한 기능을 가진 Index from end operator가 C# 8.0 이후로 추가되었다는것을 알게 되었다. 사용 방법은 인덱스 앞에 캐럿 기호인 ^를 사용하면 된다. 단 음수 인덱스를 사용하는것과 똑같이 0은 음수로 존재할수 없으니 ^1가 뒤에서 첫번째 인덱스 값을 가지게 된다. int[] x = new int[]{1, 2, 3, 4, 5}; Console.WriteLine(x[1]); // output: 2 Co..
[알고리즘]카운팅 정렬 (Counting Sort) 알고리즘 카운팅 정렬 알고리즘은 최댓값과 입력 배열의 원소 값 개수를 누적합으로 구성한 배열로 정렬을 하는 알고리즘이다. 작동 방식을 아래에 두가지 예제에서 확인해보자 Counting Sort Visualization www.cs.usfca.edu 위에 카운팅 정렬 사이트를 가서 Couting Sort 버튼을 클릭하면 보이는 방법이 더 정확한 정렬 방법을 확인할수가 있다. 중복되는 무작위 값을 가진 입력 배열이 있다 (단 배열 최대값은 9까지만 존재) 먼저 배열에 원소 값들의 갯수를 저장하는 배열 (카운팅 배열)을 생성한다. 각 원소 값들의 갯수를 카운팅해서 카운팅 배열에 저장을 해준다. 카운팅 배열에 각 요소들에 대해서 직전 요소들의 값을 더해준다. (누적합) 입력 배열과 동일한 크기의 출력 배열을 다시 만들어..
[알고리즘]에라토스테네스의 체 (소수 찾기) 에라토스테네스의 체는 소수를 찾는 알고리즘이다. 고대 그리스 수학자 에라토스테네스가 발견하여 에라토스테네스의 체라고 불려온다. 보통 프로그래밍에서 소수를 구하는 여러가지 방법이 있는데 아래와 같이 for문을 중첩사용하여서 현재 숫자가 1 그리고 자기 자신이외에 값으로 나누어 지는지 확인하고 나누어 떨어지지 않으면 소수로 판명한다. // 예제 소수의 갯수를 구하는 코드 int n = int.Parse(Console.ReadLine()); int[] num = Array.ConvertAll(Console.ReadLine().Split(), int.Parse); for(int i = 0; num.Length > i; i++) { if(num[i] == 1) { n--; continue; } for(int k ..
[C#]GetNumericValue() - Char를 Double, Int로 변환 GetNumericValue()는 Char가 숫자값인 경우 Double로 출력해주는 내장 메소드이다. 만약 char가 숫자가 아닌 경우에는 음수값 -1을 출력해준다. 사용하는 방법은 아래와 같다. Char.GetNumeric(Character) 위에 같은 경우는 반환되는 값이 Double이기 때문에 만약 Int값을 반환받고 싶은 경우에는 아래와 같이 형변환을 이용해준다. (int)Char.GetNumericValue(Character) 문자열중 해당하는 문자 배열 하나의 값만 반환을 해주기 때문에 만약 배열일부의 숫자를 변환하고 싶은 경우에는 ConvertAll(), Split(), int.Parse()를 이용하는것이 편하다. 재미있는 점은 char값인 경우에는 -1을 출력해주기때문에 이를 이용하면 입력..
[C#]String 앞에 @가 의미하는 것은? String 앞에 @를 사용하는 경우는 보통 두가지 경우로 나와있다 1. 파일 경로를 표현할때 이스케이프 시퀀스(\n, \t 등)으로 인식되는 \를 포함하여 무시하고 문자열로 인식하게 해준다. 예시 Console.Write("\n 예시"); # 출력값 예시 Console.Write(@"\n 예시"); # 출력값 \n 예시 2. 쿼리문을 작성할때 String으로 여러줄을 작성할때 예시 Console.Write("SELECT *\n" + "FROM user \n" + "WHERE id_no>10\n" + "ORDER BY id_no DESC\n"); Console.Write(@"SELECT * FROM user WHERE id_no>10 ORDER BY id_no DESC");
[C#]CS7022 프로그램의 진입점이 전역 코드 Main() 진입점을 무시합니다. C# 경고문 CS7022 프로그램의 진입점이 전역 코드 Main() 진입점을 무시합니다. C# 9부터는 콘솔 애플리케이션 프로젝트에는 Main 메서드를 명시적으로 포함 할 필요가 없어졌습니다. .NET 6 용 C# 템플릿은 ‘최상위 문’을 사용하므로 아래와 같은 코드를 줄여서 실행이 가능하게 되었습니다. 기존에 dotnet new console로 c#을 실행하면 아래와 같이 생성되고 using System; namespace Application { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } 현재는 이렇게 생성됩니다. // See https://aka.ms/new-console-temp..
[C++]정보은닉과 캡슐화 객체 지향 프로그래밍 언어를 다룬다면 정보은닉과 캡슐화는 어느정도 숙지하고 있어야된다고 생각한다. 일단 두 내용을 알기위해서는 선행적으로 클래스 알고있어야 내용을 이해할수가 있다. 먼저 정보은닉(Infomation Hiding)은 쉽게 "클래스 외부에서 멤버 변수에게 직접적으로 접근하는 것이 아닌 멤버 변수에게 접근하는 함수를 별도로 정의해서 접근하는 방식이다" 정보은닉이 필요한 이유는 변수에 접근할때 안전하게 접근하기 위해서 사용한다. 간단한 예를 하나 들어보면 예시) 클래스에 멤버 변수 x가 존재하고 해당 멤버 변수 x는 1~10까지 정수만 받아와야 하는 경우 정보은닉을 사용하지 않고 클래스에 멤버 변수에 사용자가 접근하게되면 해당하는 정수 이외에 값도 넣을수 있는 경우가 생긴다. 정보은닉은 이러한 ..