반응형
반응형
https://www.acmicpc.net/problem/1676
문제 요약
N! 을 한 후 뒤집었을 때 0이 아닌 수가 나올 때까지의 0의 개수 구하기
풀이 1
var s = F(int.Parse(Console.ReadLine())).ToString();
Console.Write(s == "0" ? 0 : s.Length - new string(s.Reverse().ToArray()).TrimStart('0').Length);
BigInteger F(int n) => n <= 2 ? n : n * F(n - 1);
재귀함수 만들고
그 결과를 문자열로 만들고
만약 그 문자열이 0이면 0 출력하고
아니면 재귀함수 결과의 길이와 그 결과를 뒤집은 수에서 TrimStart로 '0'을 제거한 문자열 길이를 빼주는 코드를 작성했다.
BigInteger니 TrimStart니 까먹었던 것들 다시 써서 뿌듯했는데 알고 보니 엄청 간단한 방법이 있었던......
풀이 2
var s = int.Parse(Console.ReadLine());
Console.WriteLine(s / 5 + s / 25 + s / 125);
이게 다임... 아니 너무한 거 아녀? 이런 스킬 어떻게 알고 쓰는 거야 다들??
그러니까 뒤에 0이 붙는 숫자들은 10을 곱했다는 뜻과 같다는 거고
10은 2*5로 나타낼 수 있는데
2는 팩토리얼에 거의 무조건 들어가니까 5만 찾으면 된다 이거 맞나?
그래서 그 수를 5로 나누고 5^2인 25로 나누고 5^3인 125로 나누고??
최대가 500까지니까 5^4인 625로는 안 나누는 거고??
............ㅎ
되게 똑똑한 접근방식인 건 알겠으나 나는 이해를 못 하겠어서 그냥 외워야겠다..
그동안 어떻게 지냈는지 잊어버렸으ㅋㅋㅠ 본문 폰트 바꿀까 왤케 답답하지
뭐지 이시간에 밖에서 화재경보기 울린다
머냐 진짜 의식의 흐름대로 썼네ㅋㅋㅋㅋㅋㅋㅋㅋㅋ정신없어
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[C#]백준 9655 돌 게임 - Hide (0) | 2024.11.02 |
---|---|
[C#]백준 1094 막대기 - Hide (0) | 2024.11.01 |
[C#]백준 2161 카드1 - Hide (0) | 2024.10.08 |
[C#]백준 5671 호텔 방 번호 - Hide (1) | 2024.10.07 |
[C#]백준 17176 암호해독기 - Hide (0) | 2024.10.06 |