어제 런타임 오류와 온갖 테스트 실패를 맛보고 오늘은 이 문제에서 많은 사람들이 사용하는 stack
을 이용하여 코드를 새로 갈아엎으려 했으나 어제 날린 시간이 아까워서 정확한 문제라도 찾자는 생각으로 코드를 좀 더 만져봤다.
일단 특정 테스트 케이스에서 문제가 발생하는데 어떤 케이스인지 알 수가 없기에 오류가 예측되는 케이스를 임시로 이것 저것 넣어보았다.
board
의 크기가 커지다보면 생기는 오류가 있는가pick
에 이미 존재 하는경우 기존의 숫자가 지워지지는 않는가1,2번을 가지고 테스트를 해보니 너무나도 당연하게 문제가 없었고 오랜 고민 끝에 3번의 오류를 생각해낼 수 있었다. 그리고 테스트를 해보는 순간 예상대로 기존의 값이 삭제되는 오류가 있었다.
숫자를 지우는 부분에서 remove(element)
를 사용했더니 element
에 해당하는 값이 이미 있을 경우 맨 앞에서부터 지워지는 것이었다. 따라서 해결 방법은 인덱스를 사용하는 것.
때마침 removeAt(index)
라는 메소드를 알고 있었기에 적절한 인덱스만 찾아서 파라미터로 넣어주면 되었다. 적절한 값을 생각하다가 pick
의 마지막 원소를 지우려는 것이기 때문에 pick.size()-1
로 바꿔주었다.
테스트 고고
이틀간의 대장정이 끝났다... 역시 아직도 실력이 미흡하지만 이렇게 벽을 마주하고 해결해 봐야 얻는게 더 많고 배우는게 더 많을 것이라고 생각한다.