1. 문제 2. 접근문제를 읽어보면 특정 알고리즘을 이용하는 것이 아니라 구현 문제임을 알 수 있다. 계속 구현 문제를 풀면서 느낀 것은 구현 문제는 처음부터 잘 구현해야한다!! 그렇지 않으면 디버깅 시간이나 실수 고치는 시간이 더 드는 것 같다. 그래서 구현 문제임을 파악하고 구체적인 설계부터 시작했다. 문제에서 친절하게 각 단계마다 설명을 줘서 단계별로 함수를 나눴다.고민한 점은 내려가는 위치, 올라가는 위치를 담을 고정 위치 정보, 움직이는 벨트 정보, 인형의 정보를 겹치지 않고 어떻게 저장할까 였다. class를 너무 많이 만들면 오히려 헷갈려서 최대한 줄이면서 표현하려고 했다. 처음엔 int[] 배열로 각 벨트의 내구도를 저장하고 `Doll` 클래스로 인형의 생성카운트, 현재 위치를 저장했다. ..
1. 문제 2. 접근문제의 핵심은 먹을 수 있는 초밥 가짓수의 최댓값이다. 가짓수이다. 개수가 아니다. 먹을 수 있는 가짓수가 최댓값일 때는 언제일까?먼저, 보너스 초밥을 포함하여 k개의 초밥을 먹을 때 k+1개를 먹을 수 있어서 최대이다. 하지만 무조건 보너스 초밥을 먹어야 되는 경우가 있을 수 있다. 예를 들어 보너스 초밥을 제외한 초밥의 가짓수가 k보다 적을 때는 보너스 초밥도 먹어야 한다. 이때 가짓수는 k개이다. 두 경우를 보면 여기서 중요한 것은 보너스 초밥을 포함해서 먹느냐 말냐이다. 그리고 가짓수이니깐 같은 종류의 초밥을 먹을 떄 중복 카운팅이 일어나며 안된다. 정리하면 갱신 및 저장이 필요한 데이터는 보너스 초밥의 포함 여부, 먹은 초밥의 가짓수이다. 보너스 초밥의 포함 여부는 `bo..