moonsoo5522   8년 전

알고리즘 공부 초창기때 C로 풀다가 녹다운 된 다음 STL을 장착하고 다시 왔는데 판정패 당하기 직전입니다.

덱을 사용했는데, 크게 세부분으로, 원본덱 왼쪽으로 밀어서 찾는 덱, 오른쪽으로 밀어서 찾는 덱 세개를 시뮬레이션 했습니다.

그래서

1. 원본 덱에서 바로 숫자를 찾았을경우(num[dq.front()]) 시프트 카운터를 증가시키지않고 바로 덱에서 pop.

2. 좌측으로 시프트 시키는 덱에서 숫자를 찾을때까지 카운트 증가.

3. 우측으로 시프트 시키는 덱에서 숫자를 찾을때까지 카운트 증가.

4. 최종적으로 카운트 작은 값을 sum값에 더하고, 원본 덱은 가장 적게 이동시킨 덱의 값을 복사했습니다.


임의로 테스트 케이스 여러개 넣어봤는데 잘 되니 더 풀기가 힘드네요 ㅠㅠ 도와주세요.

소스가 길어보이긴 하는데 위의 알고리즘이 전부라 쉽게 해석가능할 듯 합니다.


moonsoo5522   8년 전

감사합니다.

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