[백준] 1676번 팩토리얼 0의 개수 _ Python
·
Algorithms/Math
[초기 접근 방법] 1. N! 을 구하자 2. 0의 개수를 세자 [생각] 위와 같이 심플한 방법으로 접근하면 문제에서 N의 범위가 500까지이기 때문에 'OverflowError'가 발생한다. 따라서 OverFlow를 방지하기 위해 N!을 하는 과정에서 수의 크기를 관리해주어야 한다. 이 때, N!의 1의 자리만 보존해도 되기 때문에 다음과 같이 코드를 작성한다. # 10으로 나눠질 경우 if fact % 10 == 0: while True: # 1의 자리만 남기도록 한다. if fact % 10 != 0: fact %= 10 break fact /= 10 zeroCount += 1 [코드] # 풀이 시간 : 10 + 25분 # 시간복잡도 : O(N) # 공간복잡도 : O(1) # 참고 : - # 왜 ..
[백준] 18110번 solved.ac _ Python
·
Algorithms/Math
[초기 접근 방법] 1) 상위 15%, 하위 15% 절사 - 이 때, 소수점은 반올림 계산 2) 계산된 평균 반올림 계산 [생각] 1) 수식을 작성할 때, "0 / x" 와 같은 ZeroDivision 주의 2) 파이썬의 반올림은 ".5"와 같이 올림, 내림했을 때 동일하게 차이가 나는 경우에는 짝수 값으로 반올림 합니다. → 따라서 파이썬으로 풀 경우, epsilon. 즉 굉장히 작은 값을 더해 우리가 일반적으로 생각하는 반올림이 될 수 있게끔 해야 한다. [코드] # 풀이 시간 : 20분 # 시간복잡도 : O(NlogN) # 공간복잡도 : O(N) # 참고 : python round() 관련 자료 # https://blockdmask.tistory.com/418 import sys input = sy..
[백준] 14725번 개미굴 _ Python
·
Algorithms/Data Structure
[초기 접근 방법] 1) 개미굴 입구를 중심으로, 자식 노드들을 top [] 에 저장한다. 2) 자식노드들의 각 행에 중복되지 않는 노드들을 result[] 에 저장하도록 한다. [생각] 각 행에 중복되지 않는 노드들을 result[]에 저장하도록 구현했는데, 부모 노드가 다를 때에는 각각 저장해주어야 한다. 아래와 같은 test case 를 적어보았다. Input Output Answer 2 3 APPLE APPLE ORANGE 3 APPLE BANANA ORANGE APPLE --APPLE ----ORANGE --BANANA APPLE --APPLE ----ORANGE --BANANA ----ORANGE 올바른 접근 풀이는 다음과 같다. 1. 동굴 깊이 간선 정보를 정렬을 한다. → 사전 순서가 앞..
[백준] 1011번 Fly me to the Alpha Centaur _ Python
·
Algorithms/Math
[초기 접근 방법] 1) 문제 조건 위배 (x) def solve(move): if move = move: break return k - 도착 직전 이동거리가 1광년이라는 것을 고려하지 않았다. 2) dp (x) dp[i] : i 위치까지 가는데, 장치 작동 횟수의 최솟값 점화식 k : 직전에 이동한 거리 +- 1 dp[i] = dp[i-k] + 1 dp[i+k] = min(dp[i+k], dp[i] + 1) - 경우의 수가 매우 많아진다. [생각] - 수학적인 규칙을 찾는 문제이다. - 빠른 유형 파악과, 노트에 끄적이면서 수학적인 규칙을 빨리 찾는 훈련이 필요할 듯하다. [코드] # 풀이 시간 : 35분 + 40분(dp) + 30분 # 시간복잡도 : O(1) # 공간복잡도 : O(1) # 참고 : h..
[백준] 16991번 외판원 순회 3 _ Python
·
Algorithms/Tsp
보호되어 있는 글입니다.
[백준] 10971번 외판원 순회 2 _ Python
·
Algorithms/Tsp
보호되어 있는 글입니다.