[ 알고리즘 ]/오답노트
[ BOJ 오답노트 ] 2775 파이썬 : 부녀회장이 될테야
불주먹고양이
2022. 1. 25. 16:52
2022 01 25
1. 틀린 기록
2. 원인 분석
- 이야 새로운 오답 결과!! 시간 초과다!!! 하하하하
- 이것이 바로 맞왜틀 (맞는데 왜 틀려)인가?
- 내가 시간 초과 낸 코드를 보면 다음과 같다.
- 층수와 호수의 최댓값이 14임에도 for문에 재귀함수 범벅을 해서... 시간 제한 1초를 넘어설 수밖에 없는 아주 드러운 코드였다!!
- 아이디어는 그대로하고 차라리 이중 for문으로 구현해야겠다고 생각했다. 그래봤자 14 X 14 = 196 번의 연산이므로..
3. 해결
- 다이나믹 프로그래밍을 생각했다. 그 중에서도 바텀업 방식으로 구현하고 이차원 리스트를 만들어서 메모이제이션을 구현하도록 했다.
- 어차피 1층 이상의 가구는 그 전 층의 사람 수들을 모두 계산해야 됐어서 바텀업 방식을 생각했다.
- 또한 한번 했던 연산을 또 연산하면 시간적인 낭비가 있을 것이라고 생각해서 메모이제이션을 생각했다.
4. 배운 점
- 일단 스스로 생각해서 동적 프로그래밍을 구현 해 본 것이 처음이라서 되게 신기했다.
- 생각보다 재귀 함수가 잡아먹는 시간이 꽤 크므로 최대한 사용하지 않는.. 혹은 불가피할 때에만 써야겠다고 생각했다.
- 메모이제이션으로 같은 연산을 두번 이상 하는 것을 방지하자.