Search Results for 'ACM 문제'

1 POSTS

  1. 2007.06.19 ACM 문제 풀지마라 (33)

ACM 문제 풀지마라

Posted 2007.06.19 02:31
ACM-ICPC(International Collegiate Programming Contest)는 전세계 대학생들이 모여서 프로그래밍 실력을 겨루는 대회로 우리나라에서도 많은 분들이 참여해서 좋은 성적을 거두고 있습니다. 대회는 경쟁 방식으로 짧은 시간 안에 많은 문제를 풀면 됩니다.

문제가 깔끔하고 정답이 딱 떨어지기 때문에 평가하기가 좋은 관계로 많은 대학에서 학부 1, 2학년 프로그래밍 언어 실습 문제로 ACM 문제를 활용하고 있습니다. 제 경험으로도 1학년 때 C 언어 수업, 2학년 때 객체지향언어(C++) 수업 프로젝트 일부가 ACM 문제로 나왔습니다.

ACM 문제는 주로 알고리즘 위주의 문제로 빠른 두뇌 회전력과 사고력을 요구하기 때문에 사고력을 향상시키는 데 많은 도움이 됩니다. 하지만 문제 풀이가 어느 정도 숙달되고 나면 그 뒤로는 사실상 눈높이 수학 식의 문제 풀이 연습 밖에 되질 못합니다. 딱 떨어지는 정답을 만들기 위해 단순화시킨 요구사항과 언제나 정답이 있다는 가정 때문에 깊은 사고력에는 오히려 방해가 되는 것이죠.

그래서 일부 교수님들은 대학교 3-4학 넘어가면 ACM 문제 풀지 말라고 충고하시곤 하셨습니다. 알고리즘 위주의 ACM 문제 풀이는 프로그래밍 연습이 필요한 1,2학년 때는 많은 도움이 되지만 보다 깊이 있는 이론과 복잡한 현실 문제를 다뤄야 하는 고학년에게는 오히려 사고를 단순화시킬 수 있다는 것이죠.

사실 ACM 문제는 문제별로 난이도 차이는 있지만, 한 문제만 놓고 살펴보면 조금 똑똑한 학부 1-2학년에게 시간만 충분히 주면 누구나 풀 수 있는 쉬운 문제에 지나지 않습니다. 물론 짧은 시간 안에 척척 문제를 풀어내는 것은 아무나 할 수 있는 일은 아니지만 ACM 문제 풀이에만 익숙해진다는 것은 복잡한 덧셀 뺄셈을 빨리하는 연습을 한 초등학생과 다를 바가 없다는 것이죠.

사실 실제 소프트웨어 작성에서 분초를 다투는 알고리즘 작성 능력은 별로 중요하지 않습니다. 시간이 조금 걸리더라도 깊이 있게 사고하고, 유연하고 견고한 디자인을 하는 능력이 더 중요하죠. 칠판에 문제 써놓고 5분 안에 면접관 안에서 알고리즘 못 만들어냈다고 떨어뜨리는 압박 면접 회사는 정작 중요한 인재를 놓치고 있는지도 모릅니다.

소프트웨어 작성에서 결국 중요한 것은 명세(Specification)과 디자인(Design) 능력입니다. 명세와 디자인을 끝내고 함수 정의를 만들어주면 누구나 비슷한 결과물을 산출해 냅니다. 실제로 회사에서 방학 때 인턴을 시켜보면 명세와 디자인을 다 주고 코드를 짜오라고 했을 경우와 어떤 프로그램이 필요하다고 말만 해줬을 경우 그 결과의 차이는 확연합니다.

정리하면, ACM 문제 자꾸 풀면 득보단 해가 됩니다. 물론 타고난 재능으로 ACM 문제를 잘 푸는 것은 좋은 재능이지만, ACM 문제 풀이 속도가 좋은 개발자임을 증명하는 것은 아닙니다.


--

며칠 안 들어온 사이에 리플이 너무 많이 달려서 일일이 답변해 드리지는 못하고 여기 간단히 의견을 남깁니다. 이 글은 ACM을 세계 대회 수준으로 진지하게 준비하고 알고리즘과 데이터 구조의 깊이를 추구하시는 분들을 비하하기 위해 쓴 글이 아닙니다. (제가 어찌 감히 그럴리가 있겠습니까.)

다만 어떤 종류의 시험이든 평가 방법의 한계상 측정하지 못하는 다른 능력들이 많이 있다는 사실을 말하고 싶은 거였죠. 토익이나 토플 만점이 영어를 잘한다는 척도가 되지만, 그렇다고 토익이나 토플 공부만 해서는 영어를 잘할 수 없는 것과 같은 논리를 편 것이죠. 프로그래밍 대회의 경우 ACM을 구체적인 예로 들었지만, 꼭 ACM 뿐만 아니라 어떤 종류의 시험이든 마찬가지고요.

단지 프로그래밍을 잘하기 위해서 혹은 알고리즘이나 데이터 구조를 깊이 공부하기 위해서 무작정 ACM을 푼다는 상황은 오히려 역효과를 가져올 수도 있다는 이야기를 한 것입니다. ACM 공부하시면 알고리즘 책도 보시고, 논문도 읽어보시고, 연구도 하실텐데 그런 과정을 모두 ACM 문제 풀이로 포함하시면 ACM 문제 푸는 것도 당연히 많은 도움이 되리라 생각합니다.

너무 강한 어조로 글을 작성해서 본의보다 글이 더 나간 것 같네요. 아무쪼록 열심히 ACM-ICPC 준비하시다가 'ACM 대회에 입상도 못하고 초보 수준의 문제 몇 개만 풀어보고 함부로 이야기하는 놈'이 쓴 글을 보고 분해하신 분들은 오해 푸시길.^^;;

  1. 이전 댓글 더보기
  2. Favicon of http://proxima.1manshow.co.kr BlogIcon proXima

    | 2007.06.19 23:11 | PERMALINK | EDIT | REPLY |

    ACM 문제를 잘 이해하고 또 잘 풀 수 있는 능력이
    소프트웨어 설계할 때 도움이 될 거라고 생각하는데...

    그 내용을 이미 starplayer님이 적어주셨군요 ㅋㅋㅋ

  3. Favicon of http://skyul.tistory.com BlogIcon 서광열

    | 2007.06.20 00:20 | PERMALINK | EDIT |

    ACM 문제가 도움이 안 된다는 얘기라기 보다는 ACM 문제만 풀어서는 안 된다는 거였음. 눈높이 수학 열심히 하면 수학 시험 잘 치잖아-0-

  4. 지나가는이

    | 2007.06.29 16:20 | PERMALINK | EDIT | REPLY |

    acm icpc 문제푸는게 도움이 안된다라..
    그건 수준이 낮아서 그런거 아닌가요??
    World Final에 우승할 정도의 실력이라면...말이 달라질텐데요..그냥 단순히 코딩만해서 풀 수 있는거라...
    논문이해해서 문제푸는것도 많거든요.

    필자가 해봤자 끄적끄적거리는 수준이라서 도움이 안된다라고 하는게 아닐려나...

  5. 쥬이

    | 2007.07.14 16:00 | PERMALINK | EDIT | REPLY |

    안녕하세요. 지나가다가 글 보고 한마디 끄적거리고 갑니다.
    저는 중고등학교때 KOI(한국정보올림피아드: ACM과 형식이 아주 유사합니다)를 공부했었고, 대학에 들어와서는 모학원에서 학생들에게 KOI를 대비하여 알고리즘을 가르친지 1년정도가 되었습니다.

    ACM과 KOI가 형식이 매우 유사하다보니, ACM 문제들 위주로 학원에서 공부를 많이 시키고 있습니다. 저 또한 예전에 ACM문제들을 많이 풀었구요.

    ACM문제들이 단순 계산이나 공식들로만 이루어져 있다고 하셨는데, 그렇지 않습니다.
    문제도 굉장히 많고, 대학별로도 따로 문제가 있습니다. 이 문제들에 전세계적으로 꽤나 많은 사람들이 문제를 풀고 있는데는 이유가 있습니다.
    물론 쉬운 문제도 있는건 사실입니다만, 어떤 문제를 보셨는지 모르겠지만.. 그중에는 난이도가 매우 높은 문제들도 다수 있습니다.(지금도 전세계 사람들이 풀기 위해 아마 고분분투하고 있을겁니다)

    ACM은 여러 알고리즘들을 잘 알고 있고 그것들을 적절히 잘 조합해서 적절히 문제에 응용할 수 있는 능력을 가진 사람만이 잘 풀어나갈 수 있습니다. 여기서 얻어지는것은 '사고능력'이죠. 단순히 계산하고 공식만 외워서 풀 수 있는 문제들이라면 과연 그 많은 사람들이 계속하여 문제를 풀고자 노력할 것이라고는 생각하지 않습니다. 또한 이 '사고능력'은 그렇게 단시간 내에 이루어지는 것이 아닙니다. 명령어 가르쳐줘도 응용을 못하면 아무 소용이 없겠지요.. '사고능력'이 길러진 사람들은 이해도도 빠르고 응용도 대개 잘 할 수 밖에 없습니다.

    실제로 KOI출신의 입상학생들은 95%이상 대학에서 컴퓨터학과를 선택하고, 대학에 와서 ACM을 준비하는 학생들도 많습니다. 그러나 ACM만 준비하는 것이 아니라 대다수의 학생들이 ACM외의 프로그래밍 공부들도 합니다(제가 아는 잘나가는 학생들은 그 회사에 갈게 아니라면 인턴을 하지 않습니다. 인턴에서 배우는것에 비해 페이도 너무적거니와, 학교 다니면서 프리랜서로 개발하는 사람들도 많거든요..) 또 기존에 아는 사람들이 많기 때문에 서로 자극받으면서 공부를 하기 마련입니다. 또한 미리 전공공부를 하고 들어왔기 때문에(최소한 C언어, 자료구조, 알고리즘은 공부하고 왔기 때문..) 학점도 조금만 관리하면 다른 학생들보다 관리하기가 아주 쉽죠.

    물론 프로그래밍에서 중요한건 명세(specification)과 설계(design)가 맞는건 사실입니다. 또한 실제 개발과 ACM의 알고리즘은 많은 차이가 있다는것도 압니다. 하지만 제가 알기에 ACM출신자들 중 많은 사람들이 개발을 잘하는건 공공연한 사실입니다.(꼭 잘한다는건 아닙니다..)

    이런현실에서 ACM을 눈높이 수학에 '격하'시키는것은 대단히 안타깝네요..

    지나가다가 조금 씁쓸해서, 몇자 적고 갑니다.

  6. -_-;

    | 2007.07.14 23:19 | PERMALINK | EDIT | REPLY |

    ACM에 대해서 얼마나 깊이 있게 공부하시고 도전해 보셨는지 모르겠지만

    너무 수박 겉할기식으로 ACM을 바라 보시고 실제로 오랜 경험을 통해서

    ACM 준비를 통한 이득에 대한 체험도 없이 글을 쓰신 것 같군요.

    ACM이야 말로 생각나는데로 코드 짜면 망하기 때문에 프로그램 흐름에 대한 체계를 충분히 세우고 프로그래밍을 해야 한다는 사고를 기르는데 더없이 훌륭한 교과서적인 것이라고 생각하는데요.

  7. astein

    | 2007.07.15 21:00 | PERMALINK | EDIT | REPLY |

    본문에 보면 아래와 같은 부분이 있는데요.
    ------------
    사실 ACM 문제는 문제별로 난이도 차이는 있지만, 한 문제만 놓고 살펴보면 조금 똑똑한 학부 1-2학년에게 시간만 충분히 주면 누구나 풀 수 있는 쉬운 문제에 지나지 않습니다.
    ------------

    > 쉬운 문제들의 경우에는 모르겠지만, 대부분의 난이도 있는 문제들에는 이론적인 배경이 뒷받침되어 있지 않다면 아무리 시간을 줘도 풀 수 없는 문제들이 나옵니다. "조금 똑똑한 학부 1-2학년에게 시간만 충분히 주면 누구나 풀 수 있는 쉬운 문제"라는 부분은 대회를 오랫동안 겪어본 학생의 입장으로서는 납득하기 힘드네요 :)

  8. -_-;

    | 2007.07.15 21:28 | PERMALINK | EDIT | REPLY |

    ACM 문제 해결 가능한 사람과 시스템 디자이너와의 차이는 큽니다.
    ACM류의 문제를 풀기 위해선 알고리즘이란 것을 알아야합니다. 누구나 풀수있는 쉬운 알고리즘 부터 아무나 풀지 못하는 고급 수학을 요하는 알고리즘까지 다양한 알고리즘이 이용됩니다. 그리고 어느 단계 이상을 나가기 위해서는 위에도 언급했듯 "수학"의 영역으로 반드시 접근을 해야합니다.그래야 실제로 단 한줄을 짜더라도 심도있는 코어를 만들어 낼 수 있습니다.
    이를 위해서 ACM류의 문제는 매우 좋은 접근 방법입니다.

    시스템 디자이너 또한 개발에 있어서 매우 중요한 요소이지요. 하지만 시스템 아키텍쳐 설계는 그리 큰 수학을 요구하기 보다는 "경험"이라던지 경험 보다 조금 깊은 사고 정도만 요합니다.

    예를 들면 3d게임을 만들어 내는 것은 시스템 디자이너의 몫이지만 훌륭한 3d 엔진을 만들어 내는 사람은 ACM등에서 알고리즘의 영역에 들어가 수학적 백그라운드가 탄탄한 사람들이나 가능합니다.

    더욱더 본질 적인 것은 무엇일까요? 3d엔진 개발자는 3d게임을 만들어 낼 수 있습니다. 하지만 3d게임 개발자는 3d엔진을 만들수없습니다.

    1류와 2류의 차이는 큽니다..

    수학적인 알고리즘의 필요성을 알게 하는데 일조하는 ACM.. 절대로 무시 못합니다.

  9. eilef

    | 2007.07.16 11:06 | PERMALINK | EDIT | REPLY |

    사실 ACM 문제는 문제별로 난이도 차이는 있지만, 한 문제만 놓고 살펴보면 조금 똑똑한 학부 1-2학년에게 시간만 충분히 주면 누구나 풀 수 있는 쉬운 문제에 지나지 않습니다. <--

    1. 점화식이 복잡하거나 부분문제 정의 자체가 막막한 고차원 다이나믹 문제는 풀어 보셨나요?

    2. 주어진 시간안에 최적해를 보장 못하는 문제에 대해 단순한 BT에서 시작해서 GM, B&B, SA, GA등 여러 '휴리스틱'기법을 사용해서 성능을 비교분석 해보신적 있으신가요?

    3. 눈으로 보고 이해하기는 쉽지만 실제 코드로 표현하기 상당히 껄끄러운 공간지각적인 문제에 각종 기하 알고리즘을 적용은 해 보셨나요?

    ACM및 KOI준비하는 학생들 위에서 말씀드렸던 1,2,3번 전부다 피땀흘리며 공부하고 연습합니다.

    학부 1,2학년이라...-_- 요즘은 대학에서 1,2학년때 저러한 알고리즘 이론들을 다 가르치고 실제 문제에 적용하는 연습을 시키는가 보죠? 제가 졸업한지 무려 5개월이나 지나서 요즘 대학의 실태에 어두운가 봅니다. ㅎㅎ

  10. 휴가쓰고놀기

    | 2007.07.18 15:41 | PERMALINK | EDIT | REPLY |

    ACM과 참 오랜 인연을 가지고 있습니다만.. ACM문제를 매번 풀 때마다 좌절하는 저로써는 조금은 가슴을 아프게 하는 글이군요. 학생들이 그러하듯 숙제로서 ACM문제는 그다지 가치가 없어 보이긴 합니다. 다만 대회를 준비한다는 면에서는 타의 추종을 불허할 정도로 엄청나게 도움이 된다고 감히 말씀드리겠습니다. 이유는 한 가지입니다. ACM대회의 제약 조건 때문입니다. 3명이 1대의 컴퓨터를 5시간동안 사용한다는 것 그것이 가장 큰 제약입니다만 그 제약으로 인해 대회를 준비하는 학생들에게 있어서는 엄청난 발전을 이룩할 수 있게 해줍니다. 코딩에 들어가기전에 생각하는 습관 그것을 토론하는 습관, 토론을 통해 문제를 발견하는 습관, 그런 후에 코딩을 시작해서 생각했던 것을 하나의 프로그램으로 완전히 만들어 내기 전까지 컴파일도 하지않고 오로지 머릿속의 구조물을 코딩으로 만들어 내는 그 습관이야 말로 대회를 준비하면서 제가 얻은 가장 큰 수확이라 생각합니다. 덧붙이면 문제들간의 코딩 난이도 및 디버깅 시간까지 고려해서 문제를 푸는 순서도 스케줄링을 하기도하고 때로는 코딩 스피드를 조절하기도 합니다. 개인적으로 6년 넘게 일을하면서 한번도 마감일을 어겨본 적이 없는걸 자랑으로 여기는데 그 이유이기도 합니다.

    명세와 디자인에 관한 중요성은 님이 말씀하신 것 처럼 강조를 안 할 수가 없는 것입니다. 이를 위한 좋은 이론들이 새롭게 나올 때마가 계속해서 찾아보고 익혀보는 그런 노력이 필요합니다. 하지만 제가 언급한 몇가지 습관들은 명세와 디자인 이후의 일입니다. 그런 점에서 두 부류에 대해서 서로의 중함을 비교할 수는 없다는 결론을 드립니다.

  11. Favicon of http://libe.tistory.com BlogIcon LIBe

    | 2007.07.20 18:31 | PERMALINK | EDIT | REPLY |

    한가지 부탁드리고자 합니다. "ACM 문제 풀지마라" 라는 제목은 좀 어떻게 바꾸실 수 없을련지요?

  12. 촌음

    | 2007.07.23 22:17 | PERMALINK | EDIT | REPLY |

    예전에 KLDP에서도 이와 비슷한 글타래가 있었던 것으로 기억하는데요, 저도 서광열님 의견에 98%정도 동의합니다. 알면 도움될 "지식"수준의 알고리즘을 학습하고 응용능력을 기르는 것, 중요합니다. 하지만 상식과는 다른 특수한 상황하에서 이루어지는 알고리즘을 구현하는 ACM 대회의 문제들을 풀다보면 자칫 "화성인 아키텍트"가 될 수 있다고 생각합니다.

    조엘 온 소프트웨어에도 관련 글이 나오는데요, 공부해야 할게 정말 많은 학생들이 ACM문제를 푼다고 많은 시간을 할애하고, 정작 중요한 공부(OS, compiler, assembly, debugging..)는 하지 못한채 대기업에 취업할 경우 회의에서 이런 이야기를 하게 될 지도 모릅니다. "오라클 보다는 자바가 좀 더 통합적이라는데 우리 회사에서는 왜 자바를 사용하지 않는 거죠?" 또는 다음과 같은 논문을 발표할 지도 모릅니다. "프로그래밍 언어로서 스프레드시트가 지니는 이론적인 전산언어학적 성질".. 조엘 스폴스키이 말처럼, 똑똑하긴 하지만 쓸모가 없습니다.(이 말이 왜 이상한지 모르겠다면 당신이 바로 화성인 아키텍트입니다.)

    평소 잡지에 기고된 서광열님의 글과 번역서를 봐왔는데 개인적으로 본받을 만한 분이라고 생각합니다. 컴퓨터 아키텍처에 있어서 대한민국은 아직 삼류에 불과하다는 것이 제 생각이고 이런 현실은 이 포스트에서 다루는 주제와 무관하지 않습니다. 대부분의 학생들이나 현업에 종사하고 있는 엔지니어분들 마저도 "쓸모있는 컴퓨터 공학자"가 되기 위한 이 포스트를 가볍게 여기지 않았으면합니다.

    마지막으로 2%정도 동의할 수 없는 것은, "단정적이고 강한어조"라는 사실에 많은 분들이 동의하실 것 같네요. 그럼이만.

  13. .

    | 2007.07.31 19:52 | PERMALINK | EDIT | REPLY |

    글쎄요..
    남이 시키는 일을 받아서 코딩하는 사람과
    남에게 어떤 류의 코딩을 시켜야 하는 사람간의
    공부해야 하는 것의 다름이 아닌가 싶네요.
    해외 유수기업 혹은 교수들까지도, 왜 acm에서 좋은 성적을 거두는 학생을 데려가려고 하는지
    이해해볼 필요가 있다고 보네요. 그들이 더 실력 좋은 사람을 놓칠 수 있다라고 말씀하셨는데,
    코딩을 해야하는 부류의 좋은 인재는 구하기가 쉬워서 관심의 대상이 아닌거 아닐까요?

  14. NONAKC170

    | 2008.04.10 02:44 | PERMALINK | EDIT | REPLY |

    수준이 낮은 ACM 문제만 보면 그렇지요.

    프로그래밍엔 다른 요소들도 있지만
    ACM 문제들에 녹아있는 요소들도 무시하면 큰일나지요.

    3D MAX라거나, Direct 3D 등에 들어있는 아름다운(-_-..) 기하 알고리즘들을 이해하는데는 ACM 문제를 푸는 것보다도 더 어려울겁니다.

    ACM 월파 수준의 문제를 풀 수 있는 능력을 가진 사람이 없으면,
    겉껍데기가 될 수도 있어요.

    프로그래밍에 다른 요소들이 많고 다른 요소들이 매우 중요하다는것도 알지만, 도저히 무시할 수 없는 요소들이 ACM 문제에 들어있습니다.

    ACM 문제 풀지말라고 하는 것은 너무 과격해보입니다..

  15. bym

    | 2009.08.03 17:11 | PERMALINK | EDIT | REPLY |

    문제가 깔끔하고 정답이 딱 떨어지기 때문에...
    -> 말 그대로 학부 1,2년 학생이 풀 수 있을만한 문제만 그렇다고 봅니다. 대회에서 1번 문제 정도?

    하지만 문제 풀이가 어느 정도 숙달되고 나면 그 뒤로는 사실상 눈높이 수학 식의 문제 풀이 연습 밖에 되질 못합니다.
    -> 1번 수준 문제만 계속 푼다면 동의.

    딱 떨어지는 정답을 만들기 위해 단순화시킨 요구사항과 언제나 정답이 있다는 가정 때문에 깊은 사고력에는 오히려 방해가 되는 것이죠.
    -> 요구사항은 입출력 포맷 말하는건가요? printf와 scanf ;)?
    정답이 있는 문제만 있지만 그 정답을 위한 한가지 방법만 존재한다고 은근슬쩍 가정해 버리셨네요.

    사실 실제 소프트웨어 작성에서 분초를 다투는 알고리즘 작성 능력은 별로 중요하지 않습니다.
    -> 실제 ACM대회에서도 분초를 다투는 코딩 능력은 크게 중요하지 않습니다. 논리적으로 얼마나 정확한 해결법을 찾는지가 매우 중요하죠..

    ACM 문제 자꾸 풀면 득보단 해가 됩니다.
    -> ..... ACM 문제 자꾸 풀어서 나빠진 그 어떤게 있나요? 사고에 경직을 느껴보셨나요? 그런 학생, 동료 보신적 있나요?
    저는 ACM 문제 풀어보면서 프로그래밍 스킬과 논리적 사고력을 향상 시킬수 있었고 비교적 단기간에 효과적으로 문제 해결을 위한 사고 체계를 훈련할 수 있었다고 생각하는데요?

    이 글은 ACM을 세계 대회 수준으로 진지하게 준비하고 알고리즘과 데이터 구조의 깊이를 추구하시는 분들을 비하하기 위해 쓴 글이 아닙니다.
    -> 저는 ACM 문제를 갓 접하기 시작하는 학부생이 이 글을 읽고 오해 하지나 않을까 하는 걱정에 답글을 남깁니다.

    토익이나 토플 만점이 영어를 잘한다는 척도가 되지만, 그렇다고 토익이나 토플 공부만 해서는 영어를 잘할 수 없는 것과 같은 논리를 편 것이죠.
    -> 이건 제 경험을 토대로 한 주관적인 생각이긴 하지만 토익/토플과 영어능력의 상관관계 보다는 ACM 문제풀이능력과 프로그래밍능력의 상관관계가 비교할수 없을 정도로 더 크다고 생각되는데요? 비교 대상을 잘 못 잡으신것 같습니다.

    단지 프로그래밍을 잘하기 위해서 혹은 알고리즘이나 데이터 구조를 깊이 공부하기 위해서 무작정 ACM을 푼다는 상황은 오히려 역효과를 가져올 수도 있다는 이야기를 한 것입니다.
    -> 프로그래밍을 잘하기 위해서나 알고리즘이나 데이터 구조를 깊이 공부하기 위해 무작정 ACM 문제를 푸는 사람도 없을거라 생각하고 기본적으로 프로그래밍, 자료구조, 알고리즘에 대한 기초 없이는 몇 문제 풀지도 못할 거라고 생각하지만, 설령 그런다 하더라도 저는 글쓴이께서 말하는 그 역효과는 제로에 가깝다고 생각합니다.


    글쓴이께서 말하는 디자인 능력이 중요하다는 것에는 동의하지만, 결론이 ACM 문제 풀이가 해롭다라고 난 것은.. 심각한 논리적 오류라고 생각합니다. ACM 문제만 많이 풀면 디자인 능력이 떨어진다라고는 그 어떤 이유를 봐도 생각하기 힘들고 근거도 없는듯 하고요..


    끝으로... 다시 한번 이야기 드립니다.
    2년도 넘은 글을 지금 보게 되었지만..
    ACM 문제를 갓 접하기 시작했거나 접하게 될 학생들이 이 글을 읽고 경험해보기도 전에 잘못된 편견을 가져 매우 효과적인 프로그래밍 공부방법을 지나쳐 버릴까봐 염려되어 답글을 남깁니다.

  16. 너보다니언니

    | 2009.10.11 10:37 | PERMALINK | EDIT | REPLY |

    어디서나 반복되는 작업은
    사람을 단순화시키는 것이 사실이죠.

  17. b

    | 2010.09.13 02:00 | PERMALINK | EDIT | REPLY |

    필자께서 스스로 'ACM 대회에 입상도 못하고 초보 수준의 문제 몇 개만 풀어보고 함부로 이야기하는 놈'이라고 생각을 하신다면 처음부터 잘 모르는 주제에 대하여 강하고 단정적인 어조로 글을 쓰신것부터가 실수입니다.

  18. 최원준

    | 2011.02.13 03:51 | PERMALINK | EDIT | REPLY |

    훌륭한 글입니다.
    저는 고등학생인데요. 캐나다에서 각종 프로그래밍 대회를 준비하고 있습니다.
    나중에 제 의기가 꺽여서 나태해지면, 이 글을 핑계로 "어차피 해봤자 다 쓸데없어" 라면서 포기하렵니다. 패배자한테 좋은 핑계거리를 주는 글이네요 :D.

  19. Favicon of https://naraeon.tistory.com BlogIcon ebangin127

    | 2016.09.04 13:56 신고 | PERMALINK | EDIT |

    당시 고등학생이셨으니 이제는 대학을 가셨겠군요. ACM 문제는 수단에 불과한 것인데 그걸로 승리자/패배자를 논하는 사고방식에서 벗어나셨기를 바랍니다 ㅎㅎ

    의지가 꺾이면 저걸 핑계로 벗어나겠다고 했는데, 사실 그렇게 되면 ACM 밖의 넓은 세계가 보일겁니다. 마치 고등학교 때 수능밖에 모르다가 수능이 끝나면 진정한 전공의 길이 열리고, 학부가 끝나고 대학원에 가면 학문의 길이 열리고, 그 뒤에도 이런 과정을 계속하며 더 넓은 세계가 있음을 알아가는 것과 같죠.

  20. | 2011.04.06 19:34 | PERMALINK | EDIT | REPLY |

    비밀댓글입니다

  21. 벌써6년

    | 2014.01.24 09:42 | PERMALINK | EDIT | REPLY |

    누구나 풀 수 있다? 그렇게 따지면 세상 어느일이든 충분한 시간만 주어지면 누구든 할 수 있답니다.

  22. Favicon of https://naraeon.tistory.com BlogIcon ebangin127

    | 2016.09.04 14:20 신고 | PERMALINK | EDIT |

    정지 문제도요? ACM에서 배울 수 있는 것들 중 하나가 반례를 생각하는 능력 아니던가요. 테스트 해야 하는 것은 코드만이 아닙니다. 일찌기 정약용 선생은 "이 편지가 수백 년 동안 전해져서 안목 있는 많은 사람들의 눈에 띄더라도 조롱받지 않을 만한 편지인가를 생각해야한다."라고 했습니다. 자신의 글에 쓰인 문장들이 수백 년 뒤의 테스트 케이스에도 걸리지 않게 할 것을 명시하고 있죠.

    답이 정해진 ACM 밖에도 세상은 있답니다. 생각보다 엄청난 시간이 주어진대도 인간이 할 수 없는 세상 일은 많습니다. 거창하게는 어떤 양자의 위치를 정확히 관측하는 일부터 시작해서 단순하게는 멍청할 정도로 단순한 정지 문제의 답을 내는 일이 그렇죠.

  23. Favicon of http://mezeet.tistory.com BlogIcon 미짓

    | 2014.11.21 14:05 신고 | PERMALINK | EDIT | REPLY |

    계속되는 반론은 "나는 ACM 과 고관여되어 있고 그것이 내게 매우 효능을 주며 그것은 너 따위가(!!) 알 수 없다" 라는 내용이고...

    본문에 이미 반복되는 눈높이 수준의 문제만 푸는 상황이 되는 경우에 ACM 문제를 계속 푸는 것은 문제의 목적인 사고력 향상에 도움이 안된다고 밝히고 있음에도... 너 따위라 라면서 자신의 존재를 구별지으려는 시도를 계속 하고 있습니다.

    왜 그럴까요? ㅎㅎㅎ ACM 문제를 풀 정도의 사고력이 있는 사람들이 왜 본문에 나와있는 내용을 보지 못하고 정작 ACM 문제 보다는 글쓴이를 격하시키고 자신을 높이려는 글을 쓰고 있을까요? ㅎㅎ 양상이 재미있네요.

    ACM 이 없으면 자기 이미지가 망가져 버릴 정도로 중요한 건가요 그게?

  24. Favicon of http://gracefulife.blog.me BlogIcon Gracefulife

    | 2015.10.17 11:45 | PERMALINK | EDIT |

    제목이 자극적이긴 하나 .. 댓글을 쭉 읽다보니 미짓님 댓글을 보았는데.. 시원하네요ㅋㅋㅋ

  25. Favicon of https://naraeon.tistory.com BlogIcon ebangin127

    | 2016.09.04 14:10 신고 | PERMALINK | EDIT | REPLY |

    사실 컴퓨터 과학 연구자들은 코딩과도 큰 상관이 없는 경우가 많죠. ACM의 유용성을 강조하시는 분들이 많이들 얘기하는 게 결국은 코딩으로 배울 수 없는 이론적인 내용을 배울 수 있다는 것인데, 그건 ACM보다도 더 코딩과 유리된 부분입니다.

    제가 존경하는 분인 김민장씨도 석사까지는 코딩 실력이 유지되지만 박사가 되면 오히려 줄어들 수 있다고 경고한 바 있습니다. 알고리즘 연구해 보신 분들은 다들 공감하실 듯 합니다.

    교수님들 중에도 코드를 구체적인 프로그래밍 언어로 표현해서 빠르게 문제를 풀어내는 능력은 적을 지 몰라도, 그 기반이 되는 알고리즘을 짜내는 능력은 존경할 만한 분들도 적지 않습니다. 젊을 때는 문제를 잘 풀었더라도 나이를 드시다 보니 그렇게 된 경우도 많지요. 그렇다고 ACM 1등보다 연구 능력이 떨어진다고는 볼 수 없겠죠.

    알고리즘의 효율성은 소프트웨어를 구성하는 수많은 요소중 단 하나일 뿐이고, ACM도 거기에 도달하는 방법 중 하나일 뿐입니다. 제목의 단정성에 대해 지적하는 것은 좋지만, 너무들 목숨 걸지 맙시다.

Write your message and submit