2023. 6. 23. 22:10, 알고리즘/BOJ
boj 7662번 문제를 해결할때,
처음에 제출한 정답이 테스트 중에 12%에서 실패가 나왔다.
초반 테스트가 도는걸 보니 내가 작성한 로직에는 큰 결함이 있었던건 아니것 같다는 생각이 들었고,
그렇다고 intoverflow가 발생한 형태의 실패도 아니고(정수 범위 내에서 개별 원소들에 대한 연산이므로 그렇게 넘을 수 없었다)
그렇다고 index 접근 오류에 의한 out of range 같은 런타임 에러도 아니고 하니까
맞는것 같은데 어디가 잘못되었는지 생각이 당장에 나지 않았다
그래서 고민을 많이 해보다가 참고 코드를 보게 되었는데,
내가 설정한 multiset<int> mset; 의 컨테이너 선언 위치가, 이 문제의 유형이 처음에 테스트 케이스의 개수를 주고, 각각의 테스트 케이스에 대해서 결과를 출력하는 문제였는데,
내가 선언한 위치가,
이런식으로 전체 테스트 케이스를 아우르는 범위에서 컨테이너를 선언하고 담아나가기 시작해서
이 경우 모든 테스트 케이스가 위에 선언된 하나의 multiset을 공유하게 되면서, 각각의 테스트 케이스에서 만약에 중복된 값에 대해서 접근하거나, 아니면 값들이 들어가면서 iterator의 값이 변하면 결국 원하는 출력이 안나오게 되는 형태로 내가 선언을 해버렸다.
이번 경험을 통해서 각각의 테스트 케이스를 주는 문제의 경우는, 컨테이너를 선언할때, 혹은 변수를 선언할때 선언 위치를 매우매우 중요하게 생각하고 다시한번 신중하게 고려한뒤에 선언해야 겠다는 생각이 들었다.
주의하도록 하자.
'알고리즘 > BOJ' 카테고리의 다른 글
boj 23326 번 문제를 통해 접하게된 원형 배열에서의 인덱스 표시에 관하여. curr=(curr+tmp-1)% N +1; 형태의 코드에 대해 (0) | 2023.06.26 |
---|---|
c++ map 에서 iterator를 사용할때 볼 수 있는 '->' (arrow operator)에 관하여. (0) | 2023.06.25 |
boj 19583번 문제를 통해 접하게 된 cin.eof()과 이것의 활용 방법. (0) | 2023.06.22 |
boj 11478번 문제를 통해 접하게 된 substr() 함수와 그 함수의 활용에 관하여. (0) | 2023.06.22 |
boj 16165번 문제를 통해 배우게된 unordered_map을 마치 중복을 허용하는 듯하게 사용하는 방법. (0) | 2023.06.21 |
Comments, Trackbacks