오늘 PS판에서 꽤 재밌는 일이 생겼다. 바로 소위 '핑프짓(핑거 프린세스 짓, 체리 피킹)'을 하지 말아 달라는 글이 사건의 발단이 된 것이다. 전문은 아래와 같고, 제목과 내용을 일부 수정하여 첨부한다.
제목 : 제발 "* **을 사용했는데 시간초과가 납니다"를 그만 물어봐 주세요.
제발 부탁드립니다. 일단 알고리즘에 대해 질문하기 전에 우선 자신이 그 알고리즘에 대해 제대로 잘 알고 있는가를 점검해 주세요. 게시판에 "*"을 검색한 결과가 5 페이지가량 되며, 대부분은 ***** * **** *에 대해 올라온 것입니다. * **는 일반적으로 최악의 경우에 대해시간복잡도를 가지는 알고리즘입니다. 해당 문제에서는 그러한 구현으로는 통과되지 않는 것이 당연합니다. O(n2)
재차 부탁드립니다. 제발 알고리즘에 대해 질문하기 전에 우선 자신이 그 알고리즘에 대해 제대로 잘 알고 있는가를 점검해 주세요.
언뜻 보면 예전부터 문제가 되었던 체리피커들을 향한 글로, 다소 말이 거칠어서 아쉽고 유하게만 썼다면 어땠을까 싶지만 글만 봤을 땐 나름 납득되는 수준이다. 하지만 이미 이 글이 올라온 이후부터 댓글창은 불타오르기 시작했고, 작성자가 추가 댓글을 쓴 이후로는 PS계의 거목 같은 분들이 직접 와서 (사실상 일방적으로) 끝내버렸다. 그 추가 댓글은 다음과 같다.
> 답변자는 비슷한 질문을 계속 보지만, 질문자는 비슷한 질문을 자주 보지 않습니다.
그 점은 이해합니다. 그러나, 왜 그래야만 하죠? 백준의 질문 게시판과 유사하지만 약간은 다른 특성을 가진 사이트인 Stack Overflow는, 중복된 내용의 질문을 한 질문으로 링크합니다. 왜 이렇게 하는 것일까요? 또한, Stack Overflow는 질문을 올릴 시점에 내용을 대조하여 유사한 질문들을 미리 보여주기도 합니다. 왜 이렇게 하는 것일까요?
물론, 질문을 하는 자세는 좋은 자세라고 생각합니다. 이러한 질문들을 완전히 "금지해야 한다"라는 생각으로 글을 쓴 것도 아니기도 하고요. 하지만, 누구나 질문을 하기 전에 "최소한의 노력"이라도 하는 것이 답변하는 사람에 대한 예의 아닐까요? 적어도, 이러한 주제에 대해 질문할 때, "여러 사이트를 찾아보고 * **이 최악의 경우 매우 느리게 작동한다는 사실은 알게 됐는데, 왜 그런지 궁금합니다" 정도의 질문이었다면, 질문을 하기 전에 스스로 노력을 해 보았다는 생각이라도 들 것 같습니다. 이렇게 저는 질문을 하기 전에 "최소한의 노력"이라도 먼저 해 보도록 권장했으면 좋겠습니다. 예시로 든 정도가 아니라도, 구글에 검색해 보는 정도가 아니라도, 적어도 ChatGPT에 물어보는 정도의 노력이라도 하는 사회가 되었으면 좋겠습니다.
왜 이 추가 댓글을 기점으로 이 작성자는 얻어맞기만 했을까? 이에 대해 내 사견을 조심스레 담아보고자 한다.
한국 PS의 기형적인 구조
PS(Problem Solving)는 프로그래밍 언어를 이용하여 문제에 지시된 임무와 제한을 만족하는 알고리즘을 사용해 푸는 것이다. 즉, 이를 알기 위해, 또는 즐기기 위해서는 컴퓨터 공학 쪽으로의 지식이 매우 많이 동반되어야 한다. 이는 필연적으로 고인물 파티가 되기 쉽게 만드는 구조가 된다.
실제로 한국으로 스코프를 줄여보면, 이 PS를 즐기는 사람들은 대다수가 과고생 또는 지망생, 컴퓨터 특화 고등학교 학생 또는 지망생이거나 이었던 사람들이다. 이미 여기서부터 하는 사람들만 한다는 인식이 들었을 것이다.
게다가 PS는 컴퓨터 관련 학과의 매우 마이너한 분야다. 최근에 그나마 코딩 테스트의 존재로 인해 PS가 알려졌지, 여전히 메이저한 과목에 비하면 안 알려진 분야다. PS로 백엔드나 프론트엔드같이 안정적인 직업을 구하는 건 여전히 어렵다.
한국에서는 이 PS를 할 수 있는 유명한 OJ(Online Judge) 사이트가 바로 백준 온라인 저지다. 하지만 세간의 인식은 그저 코딩 테스트 대비용 사이트일 뿐, 경쟁적 PS 대회인 KOI(한국정보올림피아드), IOI(국제정보올림피아드), NYPC(넥슨 청소년 프로그래밍 챌린지), SCPC(삼성 대학생 프로그래밍 경진대회), ICPC(국제 대학생 프로그래밍 대회)과 같은 PS 대회가 있는지도 모르는 경우가 부지기수다. 애초에 적당히 어려운 수준까지만 보는 코딩 테스트 대비용 사이트에서 논문까지 보면서 풀어야 할 문제를 풀 필요가 없다.
그렇기 때문에 이러한 환경들이 겹치고 겹쳐 현재 PS판은 고인물들만 남고 새로 유입되는 사람들조차 편차가 상위권으로 집약된, 매우 기형적인 환경이 지속되고 있다.
왜 저 글은 잘못되었나
이 글을 읽는 모든 여려분은 한때 학생이었거나, 학생일 것이다. 본인이 모르는 것이 있다면 일단 어떻게 하겠는가? 당연히 해당 문제의 지식을 가진 사람인 선생님, 또는 교수(또는 조교)에게 물어보는 것이 매우 당연하다. 그들은 언제나처럼 해당 지식을 다시 설명해 줄 것이다. 선생님과 교수에게 있어 질문받는 일은 최소 몇 년에서 최대 몇십 년을 한, 흔한 업무 중 하나다.
현재 컴퓨터 관련 학과의 인기는 식을 줄을 모르고 있고, 전공생을 비롯한 복수전공생/비전공생마저도 다양한 방법을 통해 해당 관련 직종을 얻어내려고 고생하고 있다. 즉, 그런 사람들이 코딩 테스트를 대비를 하러 백준 온라인 저지에 정말 많이 온다. 그런 사람들이 질문이 쌓인다면 당연히 몇 년에 걸쳐 몇 페이지를 뒤덮는 것은 당연하다.
이런 점에서 이 글은 잘못되었다고 생각한다. 앞서 언급한 한국 PS의 기형적인 구조로 인해 생긴 폐해 중 하나가 바로 내려치기다. 예를 들어 데이크스트라 알고리즘을 생각해 보자. 이 알고리즘은 중급자 이하로는 너무나 당연하게 어렵고, 실제로 고인물들 사이에서조차 쉽게 생각해 내기 어려운 알고리즘으로 종종 평가받는다. 당연히 난 아직도 데이크스트라 알고리즘을 여전히 잘 모르고, 확실하게 이해했다고 말 안 한다. 하지만 일부 사람들은 이건 너무나도 당연하기 때문에 쉬운 것이라고 치부해 버리고 내려쳐버린다.
이렇게 내려치기가 당연하고 웰노운(well-known)으로 치부하는 시선을 당연하다고 생각하는 사람들이 소수 있다. 물론 그들이 살아온 삶으로 비춰봤을 땐 그럴 수 있다고 생각한다.
하지만 해당 글은 내가 아는 것은 다른 사람도 당연히 알 것이라는 착각, 그리고 본인이 애매하게 아는 것을 아는 것이라고 착각한 경우였다. 해당 글에서는 그런 모습이 보였고, 그랬기에 일방적인 결과가 나왔던 것이다.
그렇다면 하나씩 어디가 잘못되었는지 간단히 짚어만 보자.
1. * **은 일반적으로 최악의 경우에 대해 O(n2) 시간복잡도를 가지는 알고리즘입니다.
시간 복잡도를 안다는 것을 굉장히 당연하게 여기고 있다. 물론 이는 컴퓨터 관련 학과를 나온다면 배워야 하는 건 맞다. 하지만 앞뒤 다 자르고 이런 시간 복잡도를, 그것도 최악의 경우라는 말을 덧붙여서 말한다면 난 이렇게 되묻고 싶다. "그러면 어떤 때가 최악의 경우이며, 그때
2. 해당 문제에서는 그러한 구현으로는 통과되지 않는 것이 당연합니다.
해당 문제는 2023년 2월 15일 기준 실버 5라는 난이도를 가지고 있다. 브론즈 1과 실버 5를 왔다갔다 거리는 대표적인 실버 수문장 격의 문제가 하나 있는데, 바로 2869번 달팽이는 올라가고 싶다다.

이 문제는 초보자의 경우 제대로 된 for문을 짰는데도 막혀서 왜 틀렸는지 찾아내는데 오랜 시간이 걸리는 문제다. 이때 아마 처음으로 시간 복잡도라는 머릿속 개념을 처음으로 체감할 가능성이 높다. 그런 사람들에게 위의 시간 복잡도를 툭 던져주고, 그렇기 때문에 틀리다는 것이 당연하다고 말을 하는 것은 옳은 접근법이라고 보기 매우 어렵다.
3. 제발 알고리즘에 대해 질문하기 전에 우선 자신이 그 알고리즘에 대해 제대로 잘 알고 있는가를 점검해 주세요.
이 문제는 약간의 비화가 있어서 * ** 알고리즘으로 푸는 장이 된 게 있다. 바로 누군가가 * ** 알고리즘으로 이 문제를 뚫어버린 것이다. 즉, 원래는 * ** 알고리즘으로 푸는 것이 아닌데 해당 문제가 워낙 유명하고 * ** 알고리즘으로 누군가가 뚫어버린 바람에 다들 이 문제는 * ** 알고리즘으로도 풀리는 것이라고 오해하게 된 것이다.

하지만 * ** 알고리즘의 최악의 경우 시간 복잡도가
4. 그 점은 이해합니다. 그러나, 왜 그래야만 하죠? 백준의 질문 게시판과 유사하지만 약간은 다른 특성을 가진 사이트인 Stack Overflow는, 중복된 내용의 질문을 한 질문으로 링크합니다. 왜 이렇게 하는 것일까요? 또한, Stack Overflow는 질문을 올릴 시점에 내용을 대조하여 유사한 질문들을 미리 보여주기도 합니다. 왜 이렇게 하는 것일까요?
'> 답변자는 비슷한 질문을 계속 보지만, 질문자는 비슷한 질문을 자주 보지 않습니다.'라는 댓글에 대한 반박인데, 스택 오버플로우는 해당 유사 질문들을 해당 페이지에 다 같이 올려주는 반면, 백준은 그렇게 보여주지 않는 UI적인 차이가 일단 존재한다. 이는 UX 방면으로 꽤 유의미한 차이를 보일 가능성이 존재한다. 그리고 한국인 특성상 영어보다는 한국어로 된 설명을 먼저 보고 싶은 경향이 당연하다. 그렇기에 스택 오버플로우를 안 보고 질문을 올리는 거라고 생각해 볼 법 한데, 굳이 저렇게까지 본인에게 당연한 것이 남들도 당연하다는 인식을 보여줬을 필요가 있을까 싶다.
5. 물론, 질문을 하는 자세는 좋은 자세라고 생각합니다. 이러한 질문들을 완전히 "금지해야 한다"라는 생각으로 글을 쓴 것도 아니기도 하고요. 하지만, 누구나 질문을 하기 전에 "최소한의 노력"이라도 하는 것이 답변하는 사람에 대한 예의 아닐까요?
이걸 왜 글쓴이가 판단하는 건지 모르겠다. 누군가에겐 백준 질문 게시판은 최후의 보루일 수 있다.
6. 예시로 든 정도가 아니라도, 구글에 검색해 보는 정도가 아니라도, 적어도 ChatGPT에 물어보는 정도의 노력이라도 하는 사회가 되었으면 좋겠습니다. (ChatGPT 사진 첨부)
ChatGPT에 물어본다는 말에 아연실색했다. 이 말을 본 순간 이 사람은 AI에 대해 아는 게 전혀 없다고 판명되었기 때문이다. 위에 꽤나 그럴듯한 말로 점철되어 있었는데, 결국 이 모든 것들이 아는 척으로 끝나버린 경우가 되었다. 이렇게 되어버렸기에, 본인의 지식수준도 아는 척으로 부풀려졌을 가능성이 있다고 생각한다.
7. 가장 중요한 부분
그리고 무엇보다도, 질문에 대한 답을 본인이 하지 않아도 되는 선택지가 엄연히 있음에도 굳이 실버 5 문제에 저렇게까지 글을 쓰는 것은 그냥 초보자들에게 꼽준 게 아니면 뭔지 정말 알고 싶어 지는 수준이다. 오죽하면 이렇게까지 해서 가뜩이나 좁은 PS 판에서 본인의 우월함을 보여주고 싶었을까.
솔직히 나는 이렇게 저격하는 거 정말 진짜 싫어한다. 여태까지 사람을 평가하는 말을 좋아하지 않았고, 최근엔 아예 사람을 평가하는 말을 한마디도 꺼낸 적이 없다. 하지만 나는 PS 판이 조금 더 넓어졌으면 좋겠다는 생각을 하는 사람이고, 실제로 그걸 현재 이행 중에 있다. 당연히 저런 글을 못 보고 지나갈 수는 없었다.

나는 정말 보통의 교육을 받고 보통의 삶을 살았던 사람이라 아래와 위가 어느 정도 보이는 편이다. 그렇기에 개인적으로 이렇게까지 아래의 사람들을 짓밟고 올라가는 게 당연하다고 생각되는 것을 정말 싫어한다.
안 그래도 PS 판이 좁아서 조심하면서 살고 있는데, 결국 욱해서 여기까지 와버렸다. 그래도 난 이렇게 해서라도 본인이 뭘 실수했는지라도 알았으면 하는 바람이 매우 크다.
子曰, 由, 誨女知之乎. 知之為知之, 不知為不知, 是知也。
공자께서 말씀하셨다. "유由(자로子路)야, 너에게 안다는 것에 대해 가르쳐주마.
아는 것을 안다고 하고, 모르는 것을 모른다고 하는 것, 이것이 곧 앎이니라."
『논어』 위정 中
'잡담' 카테고리의 다른 글
[잡담] 스즈메의 문단속 프리미엄 시사회 후기 (스포X) (0) | 2023.02.25 |
---|---|
[잡담] 스즈메의 문단속 프리미어 상영 티켓 구입!!! (0) | 2023.02.17 |
[잡담] 조급함 (0) | 2023.02.05 |
[잡담] 향후 블로그 계획 (0) | 2022.12.28 |
[잡담] 입사 3일차 (0) | 2022.12.21 |
댓글