cuhcuh1   8년 전

나름대로 오랜 고민 끝에 푸는 방법을 생각해 냈습니다. 

아이디어를 설명하자면,

3잔 연속으로 포도주를 마실 수 없기에 3개씩 끊어서 계산했습니다.

xoo를 type1, oxo를 type2, oox를 type3라고 놓고 각각의 합의 최대값을 각각의 맞는 배열에 이전 최대값과 더해서 저장했습니다.

이전 타입에 따라서 다음 타입이 안되는 경우도 있기 때문에 (예를 들어, 타입3에서 타입3이 나오는 경우는 가능하지만 타입1에서 타입3이 나오는 경우는 불가능) 그것들을 고려해서 최대값을 계산해 배열에 저장하였습니다.

포도주가 저장된 배열은 모두 0으로 초기화를 해 놓아서 3으로 딱 나누어 떨어지지 않는 잔이 있는 경우에도 계산이 가능하게 했습니다.

개인적으로 여러 테스트 케이스를 만들어서 돌렸는데 맞게 나와서 어떤 부분이 잘못되었는지 잘 모르겠습니다.

도와주십시오 ㅠㅠ

hokma   8년 전

3개 일때  XOO  OXO  OOX
6개 일때  XOOXOO  OXOOXO  OOXOXO
                OXOXOO  OOXXOO
9개 일때  XOOXOOXOO OXOOXOXOO OOXOXOXOO
               OXOXOOXOO OOXXOOXOO OXOOXOOXO
               OOXOXOOXO OOXOOXOOX

....
이렇게 푸신거 맞나요?

9

100 1 100 1 100 1 100 1 100 넣으니 402가 나옵니다.

OXOXOXOXO와 같이 XOX를 선택해야 최적의 답이 나오는 경우에서 틀리신거 같네요.

댓글을 작성하려면 로그인해야 합니다.