여태까지 배운 내용을 바탕으로, 파이썬으로 로또 번호 6개를 중복 없이 뽑는 방법을 알아보겠습니다. c언어 스럽게 짠다면 아래와 같이 작성할 수 있습니다. 먼저, flag를 선언합니다. 이것은 단지, 어떤 수가 뽑혔는지를 나타내는 배열입니다. 5번째 줄부터 6번을 돌려보는데요. r은 구간 [1, 45+1)에 속하는 수 중 하나입니다. 수를 뽑았을 때, flag[r]의 값이 1이라면 루프를 계속 돌고, 그렇지 않으면 r을 선택합니다. r을 선택할 때, flag[r]에 1을 넣어줍니다. 그리고, 선택한 수를 추가해 주면 됩니다. 이렇게 6번을 뽑으면 됩니다. 중복된 수가 나오지 않았음을 볼 수 있습니다. 그런데, 파이썬에는 딕셔너리가 있습니다. 이것은, 중복된 키 값을 저장하지 않습니다. 그렇다면, 아래와 ..
분류 전체보기 검색 결과
예전에 네이버 블로그를 운영했을 때, 이 글에서 compare 메서드에 대해서 언급했던 적이 있었습니다. 이것에 대해서 혼동되게 설명한 것도 있고, 잘못 설명한 것도 있어서 다시 짚고 넘어가겠습니다. 먼저, Comparable interface에 정의된 CompareTo 메서드에 대한 설명입니다. 특정 object를 ordering을 위해서 비교한다고 되어 있습니다. 우선 순위가 높다. 낮다 보다는, 순서를 매기기 위해서 이 메서드를 호출한다고 보는 것이 적절해 보입니다. 그리고 리턴 부분을 보면, -1, 0, 1이 아닌 단순히 음수, 0, 양수를 리턴한다고 되어 있습니다. -1을 리턴하는 것과 음수를 리턴하는 것은 의미상 차이가 분명히 있는 부분입니다. 아래 예제 프로그램을 보시면 명확하게 다가옵니다...
git을 하다 보면, working tree의 상태를 자주 보게 됩니다. 이를 위해서 쓸 수 있는 명령어는 git status입니다. 먼저, SpringEx1 프로젝트에서 SpringEx1Application.java를 바꾸었습니다. 몇 개의 줄을 지웠다는 것을 알 수 있습니다. 그리고 saveAll을 누르면 SpringEx1Application에 하늘색이 들어왔다는 것을 알 수 있습니다. 이것은 어떤 상태일까요? 수정은 되었지만, 반영은 되지 않은 상태입니다. 해당 프로젝트의 루트 경로에서, git status 명령어를 입력해 봅시다. 그러면, modified라는 내용이 뜹니다. 이 내용이 있는 것으로 보아서는, 해당 파일은 변경 내용이 tracking이 되고 있는 상태입니다. 단지, 수정이 된 상태인..
이번 시간에는 for in문에 많이 써먹는 range에 대해 알아보겠습니다. range는 공식 문서에 따르면 sequence 입니다. 그리고 이터레이터를 제공하는, 불변 객체입니다. 그래서 어떻게 써야 하는지 알아봐야 겠습니다. 예제 5개를 보도록 하겠습니다. 먼저 1번째 예제입니다. range(5)만 있습니다. 이것은 끝만 있습니다. 문서에 따르면 stop만 있습니다. 그리고 start가 없는데요. 이 경우에는 시작이 0이다라는 것이 생략되어 있습니다. default가 0인 셈입니다. 그리고 스텝 수 default 값은 1입니다. 이에 대한 설명은 밑에서 이야기 하겠습니다. 실행 결과는 0, 1, 2, 3, 4가 나옵니다. 끝 원소인 5가 포함되지 않았다는 것이 중요합니다. 그리고 1씩 증가했다는 사실..
java 1.5부터는 Concurrent 패키지가 도입되었습니다. 안 쓸 이유가 없을 겁니다. 왜냐하면, wait와 notify를 이용해서 관리하는 게 쉽지 않기 때문입니다. 제가 생활 코딩에 올린 일련의 글들을 보면 알 수 있습니다. 이번 시간에는 그 중 첫번째인 ArrayBlockingQueue를 알아보겠습니다. 이것은 BlockingQueue를 implements한 클래스입니다. Blocking이라고 하면 블록을 하는 것을 의미합니다. 큐이긴 큐인데, 넣는 연산도, 빼는 연산도 조건에 맞지 않으면 맞을 때 까지 대기할 수 있게끔 한 클래스입니다. 그런데, 이것을 구현한 구현체가 Array 어쩌고입니다. 보통 배열은 크기가 정해졌을 때 많이 써 먹으니, 버퍼의 크기가 정해진 생산자 소비자 문제에서 쓰..
최근댓글