[ 실패후기 ]
실패후기이기때문에 성공코드가 없습니다. 성공코드를 보고자하신분은 뒤로가기를 눌러주세용.
브론즈 5문제인데 왜 못풀었냐?
허 참 이건 파이썬으로만 브론즈고 다른 언어로는 리얼 플레티넘급 문제인 듯 싶사오니 저는 눈물을 머금고 처음으로 뒤로가기를 눌러봅니다.
파이썬으로 풀기만 하기에는 내 자존심이 허락을 안해서 다음에 내가 문제를 풀 수 있을때 다시 도전해보려한다.
[ 문제 ]
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
[ 코드 ]
1. 재귀함수
using System.Numerics;
int n = int.Parse(Console.ReadLine());
BigInteger result = Factorial(n);
Console.Write(result.ToString());
BigInteger Factorial(int n)
{
if (n <= 0) return 1;
else return n * Factorial(n - 1);
}
2. 반복문
using System.Numerics;
int n = int.Parse(Console.ReadLine());
BigInteger result = Factorial(n);
Console.Write(result.ToString());
BigInteger Factorial(int n)
{
BigInteger result = 1;
for (int i = 2; i <= n; i++)
{
result *= i;
}
return result;
}
3. 반복문 + 딕셔너리에 값 저장해놓고 중복 계산 방지
using System.Numerics;
Dictionary<int, BigInteger> arr = new Dictionary<int, BigInteger>();
int n = int.Parse(Console.ReadLine());
BigInteger result = Factorial(n, arr);
Console.Write(result.ToString());
BigInteger Factorial(int n, Dictionary<int, BigInteger> arr)
{
if(n <= 1) return 1;
if(arr.ContainsKey(n)) return arr[n];
BigInteger result = 1;
for (int i = 2; i <= n; i++)
{
result *= i;
arr[n] = result;
}
return result;
}
4. 반복문 + 배열
using System.Numerics;
int n = int.Parse(Console.ReadLine());
BigInteger result = Factorial(n);
Console.Write(result.ToString());
BigInteger Factorial(int n)
{
BigInteger[] arr = new BigInteger[Math.Max(n + 1, 2)];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i <= n; i++)
{
arr[i] = arr[i - 1] * i;
}
return arr[n];
}
모두 안됩니다.
화나서 아무거나 쳤더니 중간에 틀렸습니다가 제출됐읍니다... ㅎㅎㅎㅎㅎ
그래서 C#으로는 아예 못푸는거 아닌가? 싶어서 C# 제출자들을 확인해보니
하.... 세달전에 딱 한명이 성공한 기록이 있다.
그래서 더 도전해보려고 블로그에 올려둔다.
가뭄에 콩 나듯 나와 비슷한 처지를 가진 똑똑 개발자를 찾았다. 이분은 자바스크립트 개발자인 것 같은데 자료구조까지 세세하게 설명해주셔서 나중에 내가 이정도 레벨까지 가게된다면 참고해서 풀어야겠다.
> 이진 트리를 통한 빠른 팩토리얼 구현 모델 분석 <
문제링크: https://www.acmicpc.net/problem/27434
어제 못풀어서 스트릭 100일을 못채웠긴한데 의외로 잘된일이라고 생각한다.
강박같은게 생겨서 출석처럼 쉬운문제를 풀고 나가버렸는데,
이제는 그럴 필요없이 집중할 수 있을 것 같다.
그래두.. 조금 아쉬운 것 같기도..
'Language > C#' 카테고리의 다른 글
[C#] 백준 9237번 이장님 초대 (0) | 2024.04.23 |
---|---|
[C#] 백준 1026번 보물 (0) | 2024.04.22 |
[C#] 백준 11399번 ATM (1) | 2024.04.14 |
[C#] 백준 1526번 가장 큰 금민수 (0) | 2024.04.13 |
[C#] 백준 1260번 DFS와 BFS (0) | 2024.04.12 |