본문 바로가기
반응형

c#125

C# 피보나치 수열 IEnumerable, IEnumerator 상속받아서 구현하기 C# 피보나치 수열 그동안 재귀로 피보나치 수열은 여러번 구현해봤다. 이번에는 IEnumerable, IEnumerator를 상속받아서 피보나치 수열을 구현해보자. using System; using System.Collections; using System.Collections.Generic; using System.Linq; public partial class Program { static void Main(string[] args) { Console.WriteLine("Enumerable Fibo"); GetFibonacciNumbers(10); } public static void GetFibonacciNumbers(int totalCount) { var fb = new FibonacciEnum.. 2024. 4. 4.
C# [백준 BAEKJOON] 6588번 골드바흐의 추측 문제 1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. 예를 들어 8은 3 + 5로 나타낼 수 있고, 3과 5는 모두 홀수인 소수이다. 또, 20 = 3 + 17 = 7 + 13, 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23이다. 이 추측은 아직도 해결되지 않은 문제이다. 백만 이하의 모든 짝수에 대해서, 이 추측을 검증하는 프로그램을 작성하시오. 입력 입력은 하나 또는 그 이상의 테스트 케이스로 이루어져 있다. 테스트 케이스의 개수는 100,000개를 넘지 않는다. 각 테스트 케이스는 짝수 정수 n 하나로 이루어져 있다. (6 ≤ n ≤.. 2024. 4. 1.
C# 꼬리 재귀(tail recursion) 꼬리 재귀(tail recursion)란 무엇인가? 지금까지 재귀에 대해서 설명하면 GetFactorial() 메서드를 사용해서 계승을 계산하는 전통적인 재귀 형태를 사용했다. 이 방식은 재귀 호출을 먼저 수행하고 값을 반환하며, 이후에 결과를 계산한다. 이 재귀 모델을 이용하는 경우, 재귀 호출이 끝날 때까지 결과를 얻을 수 없다. 이 같은 전통적인 재귀 모델과 더불어 꼬리 재귀(tail recursion)라는 또 다른 형태가 있다. 꼬리 재귀에서는 꼬리 즉, 마지막 재귀 호출이 함수가 수행하는 마지막 작업이다. using System; public partial class Program { static void Main(string[] args) { TailCall(5); } public static.. 2024. 4. 1.
C# 재귀 호출 동작 방식 재귀 호출에 대해 재귀(recursion) 함수란 자신을 호출하는 함수를 말하는데, while이나 for와 같은 순환처럼 재귀 함수도 하나씩 작은 부분을 처리한 결과를 결합해 하나의 복잡한 문제를 해결해 나가는 방법이다. 하지만 for나 while은 작업이 끝날 때까지 반복을 계속하는 반면, 재귀호출은 작업 자체를 잘게 쪼개서 처리한 결과를 결합하는 방법으로 더 큰 문제를 해결한다는 차이가 있다. 반복에 비해 재귀가 더 짧게 구현 가능한 경우가 많기 때문에 함수형 접근 방식에 적합하지만, 설계와 테스트는 더 어려운 편이다. 재귀 호출로 코드를 더 짧게 구현 가능 설계와 테스트 난이도가 올라감 using System; public partial class Program { static void Main(s.. 2024. 3. 29.
C# LINQ - Enumerable.TakeWhile Enumerable.TakeWhile(IEnumerable, Func) 메서드 public static System.Collections.Generic.IEnumerable TakeWhile (this System.Collections.Generic.IEnumerable source, Func predicate); 매개변수 source IEnumerable 요소가 반환되는 시퀀스 predicate Func 각 소스 요소를 조건에 대해 테스트할 함수 반환 IEnumerable 테스트를 통과한 요소들의 시퀀스를 반환한다. 예제 코드 string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" }; IEnumerable qu.. 2024. 3. 28.
C# string에서 16진수로 변환하기 string에서 16진수로 변환하기 string에서 16진수로 변환하기 위해서는 우선 각각의 string을 한글자씩 char 요소로 분해해서 이를 바이트로 출력하면 된다. 이때 바이트로 변환되는 값은 10진수이다. public static byte[] ConvertToByte(string str) { byte[] bytes = new byte[str.Length]; int i = 0; foreach (char c in str) { bytes[i++] = Convert.ToByte(c); } return bytes; } 전체 예제 코드 using System; public partial class Program { static void Main(string[] args) { int i = 0; string.. 2024. 3. 28.