dp 3

[백준] 23560 약 (C++)

23560번: 약 백준이는 $N$일 동안 약을 먹어야 한다. 약은 아침, 점심, 저녁에 한 번씩 먹어야 하고, 한 번 먹는 약은 약 봉투에 담겨있다. 약 봉투는 $3N$개가 일렬로 붙어 있고, {(아침 약), (점심 약), (저녁 약)} www.acmicpc.net 어렵지 않은 실버 dp 문제이다. 학회에 질문이 올라왔던 문제라 한 번 풀어보았다. 나는 dp로 풀었는데, 다른 동기는 등비수열 꼴의 매우 간단한 일반항으로 문제를 해결하였다. 신기해서 풀이를 써본다. 문제는 어렵지 않다. N일동안 아침, 점심, 저녁 약 봉투에서 약을 뜯어서 먹어야 한다. 이 때, 아침약과 저녁약은 똑같다. 약 봉투는 3N개가 일렬로 붙어 있고, {(아침 약), (점심 약), (저녁 약)}을 N번 이어붙인 형태이다. 약을 먹..

PS/백준 2021.11.16

[백준] 1563 개근상 (C++)

1563번: 개근상 백준중학교에서는 학기가 끝날 무렵에 출결사항을 보고 개근상을 줄 것인지 말 것인지 결정한다. 이 학교는 이상해서 학생들이 학교를 너무 자주 빠지기 때문에, 개근상을 주는 조건이 조금 독 www.acmicpc.net DP문제였다. 나는 Top-Down으로 풀었다. 인터넷에 Top-Down으로 푼 사람이 별로 없고 과제하기도 싫어서(?) 글을 올려본다. 문제는 간단히 다음과 같다. 학기가 N일인 경우에 개근상을 받을 수 있는 출결정보의 개수를 세는 문제이다. 개근상을 받을 수 없는 사람은 지각을 두 번 이상 했거나, 결석을 세 번 연속으로 한 사람이다. 그 외의 모든 경우는 개근상을 받을 수 있다. 풀이 문제를 읽어보면 비교적 쉽게 DP인 것을 눈치챌 수 있다. 만약 학기가 N일차이면 N..

PS/백준 2021.11.06

[백준] 23061 백남이의 여행 준비 (C++)

23061번: 백남이의 여행 준비 1번 배낭이 담을 수 있는 무게는 20이고, 담을 수 있는 최대 가치는 34이므로 효율성은 1.7이다. 2번 배낭이 담을 수 있는 무게는 21이고, 담을 수 있는 최대 가치는 37이므로 효율성은 약 1.76이다. 3 www.acmicpc.net 12번 제출해서 겨우 맞춘 문제이다... 최근에 많이 풀었던 유형의 문제라서 풀이는 바로 알아냈다. 그런데도 12번이나 풀었다. 결론부터 말하면 메모리 초과로 매우매우 고생했다. 혹시 비슷한 고민을 하시는 분이 있을까 봐 풀이의 하단에 메모리 초과를 해결한 방법을 기록해두었다! (실제로 채점 현황을 보면 한 페이지에 한 분 꼴로 메모리 초과가 나는 것을 볼 수 있다...ㄷㄷ) 문제 이해는 어렵지 않다. 물건 N개가 있고 각각 무게..

PS/백준 2021.11.03