본문 바로가기

Algorithm7

백준[2447/C#] 별 찍기 - 10 별찍기 너무 싫다... 이번 별찍기 문제는 분할 정복을 이용하면 좋습니다. 일련의 규칙을 통해서 작게 작게 그려지는 사각형들로 큰 사각형을 이루고 있기 때문에 단위별로 분리해서 생각하고 큰문제로 적용시키면 좋겠지요. 1차적으로 분할해서 풀어본다면 public void StarMain() { int num = int.Parse(Console.ReadLine()); for(int i = 0; i < num; i++) { for(int j = 0; j < num; j++) { if ((i % 3 == 1) && (j % 3 == 1)) { Console.Write(" "); continue; } Console.Write("*"); } Console.WriteLine(); } } 이렇게 풀어봤는데 이렇게 풀경우.. 2021. 10. 19.
백준[10870번/C#] 피보나치 수 5 평소에 알고리즘 공부 안하다가 스텝업을 위해서 요즘 알고리즘 공부를 열심히 하고 있습니다. 사용언어 : C# 피보나치 수를 구하는 것은 일단 시간 복잡도 상 재귀함수로 구하는 것은 비효율적입니다. 재귀 함수 이용시 시간 복잡도가 O(2^n)이 되어버리기 때문에 효율적으로 하고 싶다면 '반복문'을 활용 하시는게 좋습니다. 반복문으로 구할 경우 시간 복잡도는 O(n)입니다. 원리는 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 첫번째와 두번째 수를 더하면 세번째 값이 되고 한칸씩 오른쪽으로 밀려가면서 더해가는 수열입니다. 즉, C = A+BB = AA = C 이렇게 반복해나가면 되지만...문제는 재귀함수를 활용해달라고 했으니 재.. 2021. 10. 19.
백준 알고리즘 2588번 using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { int inputFir = Convert.ToInt32(Console.ReadLine()); int inputSec = Convert.ToInt32(Console.ReadLine()); int[] val = new int[inputSec.ToString().Length]; int DevineNum = inputSec; for(int i = val.Length - 1; i >= 0; i--) { val[i] = DevineNum % 10; Console.WriteLine(val[i] * inputFir); DevineNum /= 10; } Consol.. 2019. 8. 4.