크레인 인형뽑기 게임 (2)

최진훈·2022년 2월 17일
0

programmers

목록 보기
38/73


어제 런타임 오류와 온갖 테스트 실패를 맛보고 오늘은 이 문제에서 많은 사람들이 사용하는 stack을 이용하여 코드를 새로 갈아엎으려 했으나 어제 날린 시간이 아까워서 정확한 문제라도 찾자는 생각으로 코드를 좀 더 만져봤다.
일단 특정 테스트 케이스에서 문제가 발생하는데 어떤 케이스인지 알 수가 없기에 오류가 예측되는 케이스를 임시로 이것 저것 넣어보았다.

  1. 연속되는 숫자가 세개인 경우에 혹시 세개가 삭제되는가
  2. board의 크기가 커지다보면 생기는 오류가 있는가
  3. 연속되는 조건이 달성되었을 때 삭제하려는 숫자이 pick에 이미 존재 하는경우 기존의 숫자가 지워지지는 않는가

1,2번을 가지고 테스트를 해보니 너무나도 당연하게 문제가 없었고 오랜 고민 끝에 3번의 오류를 생각해낼 수 있었다. 그리고 테스트를 해보는 순간 예상대로 기존의 값이 삭제되는 오류가 있었다.
숫자를 지우는 부분에서 remove(element)를 사용했더니 element에 해당하는 값이 이미 있을 경우 맨 앞에서부터 지워지는 것이었다. 따라서 해결 방법은 인덱스를 사용하는 것.
때마침 removeAt(index)라는 메소드를 알고 있었기에 적절한 인덱스만 찾아서 파라미터로 넣어주면 되었다. 적절한 값을 생각하다가 pick의 마지막 원소를 지우려는 것이기 때문에 pick.size()-1로 바꿔주었다.

테스트 고고


이틀간의 대장정이 끝났다... 역시 아직도 실력이 미흡하지만 이렇게 벽을 마주하고 해결해 봐야 얻는게 더 많고 배우는게 더 많을 것이라고 생각한다.

profile
레고레고

0개의 댓글