본문 바로가기

백준7

[14501] 퇴사 - python 풀이 알고리즘 설계 기법 Dynamic Programming 중복 호출을 해결하기 위해 메모리에 결과값을 저장하고, 다음 호출 때 해당 값을 사용(배열 사용) 경우가 무지무지 많으면서도 조건에 부합하는지 살펴야 한다. 0) n일에 예약된 상담을 할지 말지 따지면서도, 상담을 진행할 경우 1) 퇴사 전에 상담이 마무리되어야 하고 2) 해당 상담을 진행하는 동안 다른 상담은 진행할 수 없으므로, 이전에 진행중인 상담이 있었는지 확인해야 한다. 나는 2번 조건이 너무 까다로워서 애를 먹었는데, 이걸 해결하는 방법은 스케줄을 뒤에서부터 잡는 것이다. 뒤에서부터 일정을 잡을 경우, 앞 날에는 일정이 없으므로 2번 조건을 따지지 않아도 되는 것이다. 앞에서부터 일정 잡느라 끙끙댄 사람 접니다 문제를 보면 1일 2일 3일.. 2022. 3. 18.
[9661] 돌 게임 7 - python 풀이 알고리즘 설계 기법 Dynamic Programming 중복 호출을 해결하기 위해 수학적 접근 방법 사용 처음에 주어지는 돌 개수 필승 방법 이기는 사람 1 1 SK 2 1-1 CY 3 1-1-1 SK 4 4 SK 5 1-4 / 4-1 CY 6 4-1-1 / 1-4-1 / 1-1-4 SK 7 4-1-1-1 / 1-4-1-1 / 1-1-4-1 / 1-1-1-4 CY 8 7일때 후공이 반드시 이겼으므로, SK가 처음에 1개를 가져가서 필승 SK 9 5일때 후공이 반드시 이겼으므로, SK가 처음에 4개를 가져가서 필승 SK 10 9를 만들면 CY에게 주도권이 넘어가고, 6을 만들면 선공이 반드시 이겼으므로 CY필승 -> 즉 내가 10을 마주하는 순간 필패 CY 11 10이면 후공필승, 7이면 선공필승이므로 S.. 2022. 3. 17.