About Eight Queen Problem ¶
널리 알려진 고전적 체스 퍼즐. 8X8의 체스판 위에 총 8개의 여왕을 배치하는데 서로 공격하지 않아야 한다. (참고로 여왕은 상하좌우 대각선 총 8방향으로 마음대로 -- 장기의 차와 같이 한번에 여러칸을 -- 움직일 수 있다.
Sample Output ¶
- - Q - - - - - - - - - Q - - - - Q - - - - - - - - - - - - - Q Q - - - - - - - - - - - - - Q - - - - Q - - - - - - - - - Q - -
이 문제를 프로그래밍을 해서 풀어보세요. 어느 언어를 사용하든 상관없습니다. 가장 자신있는 언어를 사용하세요. 그리고, 맞는 결과를 구했다면 다음 칸을 채워주세요. 비교적 간단한 문제이지만, 문제를 해결해 나가는 중에 자신의 실력과 사용하는 도구, 프로그래밍 과정, 디자인 방법 등에 대해 생각해 볼 기회가 될 것입니다. 모든 후배들에게 꼭 한번 시도해 볼 것을 권합니다. 이 경험에 대해 스스로 분석해 보고, 남들과 경험을 공유하고 차이를 살피고(AnalyzeMary), 또 토론하면서 아주 많은 것을 배우게 될 것입니다. 어쩌면 이제까지의 프로그래밍 경험에서보다 더 많은 것을 말이죠. 사실 이 실험의 진정한 가치는 문제 자체보다 이 문제가 가능케 하는 자기 관찰/반성과, 타인과의 논의에 있는 것인지도 모릅니다. --김창준
도전자 | 총개발시간 | 소스라인수(주석제외) | 사용언어 | Source |
이준욱 | 3h:20m | 40 lines | C | EightQueenProblem/이준욱 |
iCarus | 0h:30m | 30 lines | C | EightQueenProblem/lasy0901 |
이덕준 | 1h:10m | 73 lines | C++ | EightQueenProblem/이덕준소스 |
최태호 | 0h:35m | 71 lines | C++ | EightQueenProblem/최태호소스 |
최광식 | 2h:38m | 141 lines | C++ | . |
이선호 | 2h:29m | 58 lines | C++ | EightQueenProblem/이선호 |
강석천 | 4h:50m | 135 lines (+ 82 line for testcode. total 217 lines) | python | EightQueenProblem/강석천 |
강석천 | 0h:47m | 72 lines (+ 58 line for testcode. total 132 lines) | python | . |
임인택 | 2h:00m | 75 lines | C++ | EightQueenProblem/임인택 |
이선우 | 1h:05m | 114 lines | java | EightQueenProblem/이선우 |
최봉환 | 2h:30m | 71 lines | C++ | EightQueenProblem/최봉환 |
이창섭 | 1h:9m | 73 lines | C++ | EightQueenProblem/이창섭 |
조영봉 | 6h:00 | 일치시도 실패 | python | |
이강성 | 1h:50 | 36 lines | python | EightQueenProblem/이강성 |
햇병아리 | 10h:50m | 111 lines | C | EightQueenProblem/햇병아리 |
kulguy | 10h:00m | 229 lines | java | EightQueenProblem/kulguy |
김형용 | 8h:00m | 115 lines (+ 63 line for testcode. total 178 lines) | python | EightQueenProblem/김형용 |
서상현 | 2h:18m | 62 lines | C | EightQueenProblem/서상현 |
강인수 | 67 lines/ 28 lines | C++/python | EightQueenProblem/강인수 | |
2003년도 데블스 캠프 | ||||
민강근 | . | . | . | 8queen/민강근 |
손동일 | . | . | . | 8queen/손동일 |
문원명 | . | . | . | 8queen/문원명 |
강희경 | . | . | . | 8queen/강희경 |
곽세환 | . | . | . | 8queen/곽세환 |
nextream | 1h:02m | 21 lines | Javascript | EightQueenProblem/nextream |
da_answer | 3h:00m | 135 lines | Delphi | EightQueenProblem/da_answer |
밥벌레 | 0h:55m | 170 lines | Delphi | EightQueenProblem/밥벌레 |
용쟁호투 | 3h:56m | 146 lines | Powerbuilder | EightQueenProblem/용쟁호투 |
용쟁호투 | 2h:10m | 177 lines | MS-SQL | EightQueenProblem/용쟁호투SQL |
Leonardong | 2h:35m | 153 lines | python | EightQueenProblem/Leonardong |
조현태 | 0h:20m | 52 lines | C/C++ | EightQueenProblem/조현태 |
조현태 | 1h:00m | 60 lines | C/C++ | EightQueenProblem/조현태2 |
정수민 | 3h:00m | 132 lines | C++ | EightQueenProblem/정수민 |
안혁준 | - | 60 lines | go | EightQueenProblem/안혁준 |
최다인 | 1h:28m | 67 lines | JavaScript | EightQueenProblem/최다인 |
안정원 | 0h:16m | 13 lines | Python | EightQueenProblem/안정원 |
참고로, 소요시간이 모두 얼마냐 하는 것이 크게 중요한 것은 아닙니다. 중요한 것은 그 동안 얼마나 가치있는 무엇을(얼마나 더 얼마나 덜) 했냐는 것이죠. 남들보다 시간이 오래 걸리고, 코드가 길어졌다고 슬퍼하십니까? 아닙니다. 오히려 축하드립니다. 당신은 그만큼 큰 배움의 기회를 만난 겁니다. 자신의 프로그램이 다른 사람들의 그것보다 월등하다고 자랑스러워하며, 더 이상 배울 것이 없다고 생각하십니까? 아닙니다. 당신은 자신이 이렇게 훌륭한 해를 구한 것을 남에게 설명해 줄 기회를 찾았습니다. 가르치는 것만큼 큰 배움도 없습니다(이 때 자신이 만든 프로그램 자체를 설명하려고 하는 것보다 자신이 어떤 사고과정과 어떤 프로그래밍 성장 과정을 통해 최종물에 도달했는지를 반추해보고 설명해주는 게 더 좋겠습니다). 또 다른 사람들은 무엇 때문에 자신과 같은 좋은 해를 얻지 못했는지 분석을 할 여유가 있습니다.
만약 위의 칸을 채우셨다면 EightQueenProblem2를 보세요. (절대 문제 풀기 이전에 보면 안됨)
질문 있는 데요. 개발 시간에 문제를 보고 생각한 시간까지 포함되나요?? -- 선호
; 상하좌우 대각선 8방향을 주위로 한칸 이동할수 있는것이라고 해석을 해서..; 이상한 코드가 나와버렸네요 ㅠ.ㅠ 역시 체스를 몰라도 죄가 되는것인가~~ --인수
네. 보통 개발이라고 하면 분석, 디자인, 테스팅, 코딩 모두 포함합니다. 따라서 문제를 보고 풀어봐야지 하고 생각한 시점부터 개발은 시작된 겁니다. 사실 "코딩"의 과정은 전체에서 보면 작은 부분에 지나지 않습니다.
ㅠ.ㅠ 삽질했습니다.오늘의 교훈 : 감기약먹고 프로그래밍하지 말자. --; - 임인택
이런거 종종 하면 제미있겠네요..^^;; -최태호
와.. 참여율 높은데요~ 열띤 분위기 --석천
옛날 ZP에서 하던 1000bytes 경기 보는 것 같네 허허 _이런거 종종 하면 제미있겠네요..^^;; -최태호
와.. 참여율 높은데요~ 열띤 분위기 --석천
see also EightQueenProblemDiscussion
관련 페이지 개설 의도 ¶
제가 EightQueenProblem 일련과 토론 페이지를 열은 의도는 다음과 같습니다.
- 여러 사람이 함께 할 수 있는 것에 전시회나 강연, 기존의 스터디나 숙제 내주고 검사하기 등 말고도 가치있는 것이 많이 있다는 것을 보여주기 위해
- 자신의 프로그래밍 과정을 돌아보고(self-reflect), 남들의 그것과 비교해볼 기회 제공을 위해
- 공동 학습(collaborative/collective learning)을 유도하기 위해
- 꼭 답을 가르쳐 주거나 교정을 해주는 선생이 없어도 서로 배울 것이 무궁무진하고, 또 많은 것을 배울 수 있다는 것을 체험시켜주기 위해
- 프로그래밍을 잘한다는 것은 단순히 빠른 시간 안에 짧고 기발한 프로그램을 만들어낸다는 것이 아니라는 것을 인식시켜주기 위해
- 프로그래밍을 잘하는 사람은 프로그래밍과 사고 과정에 어떤 효율적 체계(system)들을 여러가지 갖고 있다는 것을 알려주기 위해
- 배운다는 것이 얼마나 흥미진지(exciting)한 것일 수 있는지 느끼게 해주려고
- 이미 만들어진 종적 상태의 프로그램에서보다 그것을 전혀 모르는 상태에서 직접 축조(construct)해 나가는 과정에서 배우는 것이 훨씬 더 많고, 재미있으며, 효율적인 학습이 된다는 것을 느끼게 해주기 위해
- 같은 문제의 해법에 다양한 혹은 비슷한 부분들이 존재하며, 거기서 서로 배울 것이 많다는 것을 느낄 기회 제공
- 별로 대단해 보이지 않는 활동에서 각자 얼마나 많은 것을 배울 수 있는지 직접 테스트해볼 기회 제공을 위해 -- 훌륭한 학습자는 동일한 사건에서 더 많은, 더 깊은 교훈을 얻는다는 것을 알려주기 위해