넥슨 입사 문제
인터넷에서 우연히 넥슨의 입사 문제를 접하게 되었습니다.

1번 문제를 J라는 언어로 풀어보았습니다(문제에는 C나 C++로 풀라고 명시되어 있습니다만). 제가 푼 것은 훨씬 직접적인데, 여러분들의 이해를 위해 쉽게 풀어 써봤습니다.


digits=:10&#.^:_1
digits 123
1 2 3

add=:+
over=:/
sum=:add over
of=:@

generate=: add sum of digits
generate 123
129

foreach=:"0
geneach=:generate foreach
geneach 123 456
129 471

except=:-.
selfnum=: except geneach
lessthan=:>:@i.@<:
lessthan 10
1 2 3 4 5 6 7 8 9
sum of selfnum lessthan 5000
1227365


제가 실제로 이 문제를 푼 과정은 대략 다음과 같습니다.


d=:(10&#.)^:_1
g=:(+ +/@d)"0
+/ (-. g) >:i.<:5000
1227365


문제를 푸는 데 걸린 시간은 30초, 실행시간은 구닥다리 제 컴퓨터에서 0.2초. 효율성은 고려를 안했습니다. 더 나은 풀이가 있으리라 생각합니다만 일단 만족할만한 수준으로 결과가 나와줘서 그냥 제 "문제 데이타베이스"에 넣어버렸습니다.

문제를 풀고 검색해 보니, 함수형 언어 블로그를 운영하시는 귤님께서 헤스켈(Haskell)로 푼 가 있더군요. 아마 첫번째 풀이는 헤스켈의 수학적인 아름다움을 보여주기 위해 수행시간을 무시하고 만드신 것 같습니다. 제 컴퓨터에서 실행했다가 10분을 기다려도 끝나지 않아서 ctrl-c 해버렸습니다. --; 좀 더 빠른 실행을 위한 getGenerator 함수를 사용하면 10초 정도로 시간이 상당히 줄어드네요.

--김창준
by 애자일컨설팅 | 2006/03/30 23:21 | 트랙백(10) | 덧글(5)
트랙백 주소 : http://agile.egloos.com/tb/1718200
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from make it func.. at 2006/03/31 01:11

제목 : Haskell 연습: Self Number 2
Haskell 연습: Self Number에 이어서 위의 포스트에서 소개했던 코드는 상당히 느리다. 그 이유는 어떤 수의 generator를 구하는 방법을 먼저 생각하고, 그 다음에 문제를 풀었기 때문이다. 애자일 컨......more

Tracked from Xeraph: 블로그 at 2006/03/31 01:26

제목 : Common Lisp 연습: Self Number
넥슨 입사 문제 ; SLIME 2005-04-18 CL-USER> (defun numbers (x lst) (if (= x&nbsp......more

Tracked from 고안해 내는 재능 at 2006/03/31 14:06

제목 : 프로그래머를 시험하는 문제들...
넥슨 입사 문제 개발자를 채용하는데 있어 구술 면접만이 아닌 기술면접도 점차 도입되는 추세인듯 합니다. 아래의 문제는 특정 기업의 문제만은 아니고 유사한 개념으로 제시되는 문제입니다. 참고로 해당 문제가 어느 기업에 문제라는 것은 명시하지는 않겠습니다. 혹시 아시는 분들도 계시겠지만요.. 모두 3 문제인데 모두 한 회사에서......more

Tracked from SNAIPER의 조그마.. at 2006/03/31 14:57

제목 : 넥슨 입사 문제 1번 풀이..(Ruby 허접 풀이 ..
애자일 이야기 블로그에 넥슨 입사 문제 라는 꽤 재미있는 문제가 있더군요. 그래서 한번 도전해보았습니다. 요구는 C/C++ 이지만서도, 약 3~4일 되었나 여튼 그 때부터 열공중인 Ruby 로 도전해봤습니다. 언어가 아직 익숙치 않다보니 이리 저리 더 좋은 표현 방법이 없을까 하고 이리 저리 고쳐보고 문서 찾고 고민하다보니 약 1시간 정도 들이긴 했는데, 그런데도 나온 결과를 흠...ㅠ.ㅠ 맘에 안드는군요. 공부를 더 해야한다는 신호인가봅니다. 코드가 그리 ruby답지 못해보이네요. 생각 좀 해보고 다시 개선해서......more

Tracked from partofdecons.. at 2006/03/31 17:11

제목 : Kaprekar
# Kaprekar # 2006.3.31 wookay <spa......more

Tracked from JH-Blog at 2006/04/01 04:28

제목 : C/C++ : Self Number ..
// 문제설명은 트랙백 참조 // C로 하다가, vector 만 가져다 씀. // prime number 구하는 것과 똑같음. -.- #include <?xml:n...more

Tracked from gimmesilver'.. at 2006/04/01 22:54

제목 : 넥슨 입사 문제라...
넥슨 입사 문제 문득 내가 회사에 처음 들어올 때 풀었던 시험 문제 생각이 난다. 사장님과 연구 소장님이 만든 문제였는데 극악의 난이도를 자랑했었다. 지금 생각해 보면 실력을 판가름하기 보다는 지원자를 주늑들게 하려는 목적이 아니었나 생각된다... 어쨌든 여러 사람들이 다양한 언어로 답을 제시했는데 의외로 C++로 푼 사람은 없는......more

Tracked from Hoelog's memo at 2006/04/19 15:51

제목 : 넥슨 입사문제 perl로 짜기
블로깅을 하다가 철지난 넥슨 입사문제를 발견, 심심해서 perl로 짜봤다.#!/usr/bin/perl -w use strict; use warnings; use List::Util qw(sum); my $limit = 5000; my $max_num = $limit - 1; my %hash_gen; for (1..$max_num) { $_ = gen($_); if ( $_ ) { $hash_gen{$_} = 1; } else { last; } } $_ .....more

Tracked from Lanian's Lit.. at 2007/01/12 18:04

제목 : Python 첫도전_
넥슨 입사 문제 Python으로 함 해봤는데 ... 조잡하고... 작성하는데 시간걸려서 우울했다. 일단 1번문제만... def gen(a): sum=a get=a while get: ......more

Tracked from Foolish code.. at 2011/07/08 14:48

제목 : 넥슨 입사 문제 풀이
N사 직군 면접 문제를 풀어보았습니다. 임베디드 프로그래머를 폄하하는 것은 아니지만 임베디드 프로그램은 대체로 높은 신뢰성을 요구하므로 로직 자체가 간단하게 구현되는 경우가 많습니다. 특히나 입사 초년차일 경우에는 그런 현상이 매우 두드러지게 되고 그로 인해서 머리가 굳는 것을 방지하기 위해서 이런 문제 풀이와 같은 기회를 많이 만들려고 합니다. 일단 문제 원문을 올려 드립니다. 1. 알파벳을 입력받아 계산하는 프로그램 작성 a는 1 이라하고 ......more

Commented at 2006/03/31 00:39
비공개 덧글입니다.
Commented by at 2006/03/31 01:17
김창준님 알고리즘으로 짜니 훨씬 빨라지는군요. Haskell은 어떻게 짜도 아름답습니다만, 하핫.
Commented by 애자일컨설팅 at 2006/03/31 01:38
[SHeeP님] 패키지로 있는지는 모르겠고, http://jsoftware.com/beta.htm 여기에서 리눅스 베타를 받으실 수 있습니다. GLIBC_2.3.4가 필요합니다. 예전 버전은 http://jsoftware.com/download/ 여기에서 받을 수 있는데, j504b_linux32는 GLIBC_2.3.2 로도 실행할 수 있더군요.

[귤님] 헤스켈 코드가 아름답다는 데에 동의합니다.
Commented by hardrage at 2007/09/18 22:50
J언어는 잘 모르겠는데

d=:(10&#.)^:_1
g=:(+ +/@d)"0
+/ (-. g) >:i.<:5000

정말 심플하네요.
하지만 제 눈에는 이미티콘으로 보이네요.
당연히 몰라서 그런거겠지만 가독성 0에 수렴하네요.

오늘 퇴근길에 테스트주도개발 책을 사서 지하철에 읽으면서 왔습니다.
책 앞부분과 뒷부분 재미있었습니다.
중간부분은 휘리릭 넘어갔습니다.

1번 문제 풀때 테스트케이스를 만들어 풀어봤습니다.
솔직히 테스트 부터 만들지 않고
로직을 만들고 테스트했습니다.
초반 약간의 StackOverflowException 만나다가
테스트 케이스 사실 두개 밖에 없지만 급물살
떨리는 마음에 답을 비교했는데 일치
오늘 평온하게 잠을 이룰듯 싶습니다.

이제 저두 clean code that works로~~~~
Commented by hardrage at 2007/09/19 22:03
오늘 3번 문제로 머리가 터질뻔 했네요.
안 그래도 작은 콩알만한 머린데.
RSME:1.583607432414991가 나왔습니다.
RSME 1.8 미만 휴~~
오늘 평온하게 잠을 일루듯 싶습니다.

요번에도 테스트케이스를 만들어 시작했는데
너무 엉성하고 두리뭉실하게 테스트를
만들어 뒤죽박죽 엉망진창
담배하나 피고
처음부터 다시 매우 잘게 메서드를 나누고
잘게 만든 메서드 테스트케이스 만들니깐
다양하게 테스트 하고
좀 더 큰 메서드 만들고 테스트
빛이 보이기 시작하더라구.
역시 테스트 케이슬 만들때
제대로 매우 작은 단위로 만들어야 하나 봅니다.
RSME 4.X 에서 한참을 해매다
2.4X... 도저히 줄일 수 없을 듯 싶었는데
많이 무식하게 이것 저것 하다가
1.5X

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >