ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 알고리즘 문제 사이트에서, 정답코드와 테스트 케이스를 공개해야 하는 이유
    책, 강연, 스터디 2020. 4. 11. 11:31
    728x90

    ALGOSPOT, BOJ, Leetcode 등의 사이트에서 알고리즘 문제를 풀어 보면서,
    정답코드와 테스트 케이스를 공개하는 것이, 알고리즘 문제풀이를 공부하는대 더 도움이 된다고 생각하게 되었습니다.
    물론 공개하지 않는 것도 나름의 이유가 있을 것이구요, 이글에서 공개 여부에 따른 장단점을 알아보고, 문제풀이를 공부하는대 보다 도움이 되는 방향이, 공개인지, 비공개인지 대해서 이글에 적어 보고자 합니다.

    • 이글에서 정답코드는 어떤 알고리즘 문제의 모든 테스트케이스를 통과한 코드를 말합니다.
    • 테스트 케이스는, 특정 알고리즘 문제를 올바르게 풀어낸 코드 인지 확인하기 위한, 입력/출력의 한쌍을 뜻합니다.
    • 일반적으로, 한 알고리즘 문제는 몇개에서 몇십개(또는 그 이상)의 테스트 케이스를 가지고 있구요, 코드가 모든 테스트 케이스를 통과해야, 정답코드로 인정합니다.

    국내 알고리즘 문제 풀이 사이트는 정답코드와 테스트 케이스를 공개 하는가?

    제 생각에 한국에 있는 알고리즘 문제 풀이 사이트 중에서, TOP 2를 꼽는 다면 ALGOSPOT, BOJ 입니다. 두 사이트 모두 테스트 케이스를 공개하고 있지 않습니다. 비교적 최근에 생긴 프로그래머스의 경우에는 아래와 같이 코딩 테스트에 대한 저작권을 이유로 들어 글을 비공개/삭제 처리한 경우도 있습니다.

    개인적으로는 아래 링크 처럼, 카카오 블로그에서 이미 해당 문제에 대해서, 공개하고 있는대, 비공개/삭제 요구를 왜 한 것인지 이유를 좀 알 수 없네요.

    정답코드에 대해서도, ALGOSPOT, BOJ는 모두 자신이 풀기 전에는 다른 사람의 정답코드를 볼 수 없게 되어 있습니다. github에 이미 많은 사람들이 문제를 풀어서 정답 코드를 공유하고 있는대, 어떤 실효성이 있는지 좀 의문입니다.

    해외 알고리즘 문제 풀이 사이트의 경우는 어떠 한가?

    해외 알고리즘 문제 풀이 사이트는 Leetcode, atcoder, GeeksforGeeks 이외에도, topcoder등 여러 사이트가 있습니다. 문제를 풀기 전이여도, 정답코드를 볼 수 있구요(atcoder), 특정기간이 지난 후에는 문제의 정답코드 뿐만 아니라, 문제해설도 함께 제공하기도 합니다.(topcoder)

    특히, Leetcode는 테스트 케이스가 아주 짧은 테스트케이스 부터 긴 것까지 세심하고 다양하게 제공된다는 느낌을 받았습니다. 실패한 테스트 케이스를 사용자에게 공개해 줌으로서, 내 코드의 에러를 유추하여, 개선할 수 있도록, 잘 배려 되어 있다고 생각합니다.

    정답코드 / 테스트 케이스 공개 하지 않는 이유

    ALGOSPOT과 BOJ에서는 정답코드는 문제를 푼 사람에 한해서, 다른 사람의 정답코드를 볼 수 있구요, (BOJ는 본인이 코드를 공개한 경우에만 다른 사람이 볼 수 있음), 테스트 케이스의 경우에는 두 사이트 모두 공개 하지 않고 있습니다. 이에 대해서, 아래글에서 공개하지 않는 이유를 설명하고 있습니다.

    https://algospot.com/wiki/old/765/알고스팟_온라인_저지/오답_정책

    https://www.acmicpc.net/board/view/32737

    비공개도 합리적인 결정, 하지만, 더 중요한 것이 무엇인가?

    앞에서 ALGOSPOT과 BOJ가 정답코드와 테스트 케이스를 공개 하지 않는 이유를 알아 보았고, 저는 공개하지 않는 이유도 합리적인 결정이라고 생각합니다.

    여기서 제가 말하고 싶은 것은, '비공개가 잘 못 되었고, 공개가 옳은 일이다.' 라는 주장이 아닙니다.

    어떤 일에 있어서, 2가지, 또는 여러가지 가치가 충돌하여, 교집합을 찾을 수 없을 때, 우리는 어떤 선택을 해야 할까요? 이 때, 우리가 본연의 이유, 존재의 이유를 다시 되새겨볼 필요가 있다고 봅니다.

    그럼 알고리즘 문제 사이트가 존재하는 이유가 무엇인가요? 바로 공부! 학습! 입니다. 물론 알고리즘 문제 풀이의 학습을 도와주는 가장 좋은 방법은, 아는 사람이 나의 질문을 받아주며, 설명을 해주는 것이 가장 좋습니다. ^^a 하지만, 현실적으로 어려우니 여기 스터디 함께 공부하셔도 좋구요.

    알고리즘 문제풀이 학습을 도와주기 위해서, 문제 풀이 사이트가 가장 적은 노력을 들여서, 가장 크게 공부하는 사람들을 도와주는 방법이, 저는 정답코드/테스트 케이스의 공개라고 생각합니다.

    이미 제출된 정답코드들이 있을 테니, 추가적인 노력은 공개하도록 사이트만 수정하면 됩니다. 테스트케이스는 이미 있으니, github등에 공유하면, 열성적인 유저분들이 로컬 PC에서 테스트 케이스를 실행할 수 있는 환경도 만들어 주시지 안을까? 기대해 봅니다.

    728x90
Designed by Tistory.