정상혁정상혁

바로 아래 포스팅에서 간단한 로또생성기 코드를 만들어봤었죠. (http://blog.benelog.net/1642193).

같은 문제에 대한 dak99님의 풀이(http://dak99.egloos.com/3529054)를 보고 다시 다른 버전을 만들어봤어요.

shuffle을 이용해도 Collections의 메소드들을 불러서 쓰니 코드가 별로 안 복잡해 지는군요.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class LottoMachine \{
    public static void main(String[] args) \{
        List<Integer> numberCards = new ArrayList<Integer>();
        for(int i=1;i<=45;i++) numberCards.add(i);
        Collections.shuffle(numberCards);
        List<Integer> picked = numberCards.subList(0,5);
        Collections.sort(picked);
        System.out.println(picked);
    }
}

n이 클수록 속도차이가 클겁니다.

정상혁정상혁

javaservice.net에서 보고 저도 한번 짜봤어요.

문제

  • 1부터 45까지의 숫자 중에 6개를 뽑는다.6개의 값이 다 달라야 한다.

  • java.util.Random를 이용해서 임의의 값을 구한다.

  • 출력시 작은 숫자부터 순서대로 출력

저의 풀이

간단하게 짠다면 일단 저는 아래와 같이 해보고 싶어요.

import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;
public class LottoMachine1 {
    public static void main(String[] args) {
        SortedSet<Integer> pickedNumbers = new TreeSet<>();
        Random random = new Random();
        while(pickedNumbers.size()< 6) pickedNumbers.add(random.nextInt(45)+1);
        System.out.println(pickedNumbers);
    }
}
정상혁정상혁

마이크로소프트웨어지 2007년 11월호의 특집기사는 '개발고수 7인의 천기누설, 슈퍼개발자로 가는 길’이였습니다. 왠지 얄팍해 보이는 제목이 마음에 들지 않았고, 내용을 읽기 전까지는 이제 이 잡지도 소재가 고갈되었나 하는 생각까지도 들었습니다. 그러나 거기에 포함된 델파이 고수 양병규님의 기사는 충격적일 정도로 감명을 주는 내용이였습니다.

그 기사에서는 양병규님이 PC원격제어 프로그램을 혼자서 2개월만에 개발한 이야기가 나옵니다. 양병규님은 다른 PC원격 제어 프로그램을 처음 보는 순간부터 그런 프로그램을 직접 만들어보고 싶은 마음이 들었고, 그후로 부터 실제 개발을 시작한 시기 사이의 2년동안 틈틈히 아이디어를 생각하고 메모를 했다고 합니다. 화면 캡쳐, 이미지 압축, 소켓 전송 등 프로그램에 필요한 구체적인 것까지 다 미리 생각해 둔 덕분에 실제 개발기간인 2개월동안에는 코딩만 하니 끝이였다고 하네요. 대단하지 않습니까? 아래는 그 기사에서 인용한 내용입니다.

이런 방법으로 작은 수첩하나를 가슴에 품고 자신의 생각들을 차곡차곡 쌓아가다 보면, 방금 산 복권을 양복 주머니에 넣고 희망찬 모습으로 걸어가는 모습의 복권 포스터 주인공 못지 않게 희망찬 하루하루를 살 수 있을 것이다.

델마당 양병규 님의 40대 초보 프로그래머에 대한 답변 글에 있는 양병규님의 첫 프로그램 이야기도 감동적입니다. 저의 부모님께서도 예전에 어렵게 생활하셨던 분들이라, 어른들의 젊었을 적에 고생한 사연은 어릴 때부터 하도 많이 들어왔기에 왠만한 이야기들은 저는 무덤덤하게 느껴집니다. 하지만 그런 저도 양병규님의 이야기를 읽은 뒤에는 저절로 고개가 숙여집니다.

위의 글들을 다 보고나니, 제가 프로그램 개발을 하게 된 이유를 한동안 잊어먹고 있었다는 것을 깨달았습니다. 뭔가를 만들어보고 싶다는 마음, 만다는 과정의 즐거움, 결과물을 볼 때의 뿌듯함, 혹시나 다른 사람에게 도움이 될 수 있을까 하는 기대감.. 그런 감정들이였습니다. 다른 많은 분들도 마찬가지 일 듯합니다.

그런 시작을 잊고 살다 보니 만들어보고 싶은 것이 생각나도 '시간나면 해봐야지’하는 마음으로 흘려보낸 시간들이 많았습니다. 앞으로는 자주 안 잊어먹도록 여기에도 적어놓습니다.

제 꿈은 아래에 나오신 분들 같은 '발명 할아버지’가 되는 것입니다.

(간혹 방송이나 인터넷에서 몇 분을 보기는 했는데 찾아보니 이런 할아버지들 꽤 많군요)

2050년쯤 '발명 할아버지’로 검색했을 때 어느 시골의 마을신문에서 낸 기사로 '집념의 발명 할아버지 정상혁’과 비슷한 제목이 뜬다면 제가 꿈을 이뤘다고 보셔도 됩니다. 혹시나 그 기사에 '그러나 만든 것 중 쓸모있다고 인정받은 것은 하나도 없음', '주변에서 계속 뜯어 말리고 있으나 소용없음','가족들은 갈수록 헛소리가 심해진다고 걱정이 많음’과 같은 내용이 포함된다고 해도 말이죠.