-
0x08.정렬 알고리즘(2):쉘 정렬0x.알고리즘 2017. 6. 15. 12:22
3. 쉘 정렬(Shell Sort) Shell이라는 사람이 삽입 정렬의 장점을 활용하여 개발한 알고리즘인데 만약 배열이 어느정도 정렬이 되어있다면 효율이 좋다. 이 방식은 배열의 데이터들을 몇 개의 그룹으로 나눈 다음, 각 그룹의 같은 위치의 데이터들을 비교하여 삽입정렬하고 그룹의 크기를 줄여나가는 방식을 사용한다. 위 그림은 크기가 8인 배열의 전체적인 쉘 정렬 순서를 나타낸 것이다. 색이 같은 부분들은 같은 그룹을 뜻하고, 회색으로 표시된 칸들은 비교대상이 된다. 즉 그림의 맨 첫 배열에서는 1,5,8,3이라는 값을 가진 배열칸들이 같은 그룹을 형성하고 6,2,0,7을 뜻하는 나머지 배열칸들이 다른 그룹을 형성해 그룹의 개수가 총 2개가 된다. 두 그룹의 같은 위치에 있는 1과 6데이터를 가진 배열의..
-
-
0x00.자바스크립트로 화면에서 움직이는 글자 만들기0x.프로그래밍/Web 2017. 6. 13. 16:11
0x00.자바스크립트로 화면에서 움직이는 글자 만들기 아래의 코드를 실행하면 위와 같이 알파벳들이 화면을 마구마구 돌아다니는 풍경을 볼 수 있음.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 //랜덤 정수 생성 function nextRandomInteger(limit){ return Math.round(Math.random()*limit); } //랜덤 알파벳 리턴 var alphabe..
-
0x00.파이썬으로 만드는 바운스게임0x.프로그래밍/Python 2017. 6. 12. 10:05
0x00.파이썬으로 만드는 바운스게임 오늘 만들어볼 게임은 바운스게임인데, tkinter모듈로 규격을 정하고 공 객체를 생성하여 캔버스 안에서 지속적으로 바운스되게 하는 게임이다. 1) 모듈 1 2 3 from tkinter import * import random import time cs 위의 3모듈을 사용할 것이다. 2) 공 클래스 생성하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 class Ball: def __init__(self, canvas, color): self.canvas=canvas self.id=canvas.create_oval(10,10,25,25, fill=color) self.canvas.move(self.id,..
-
0x05.Python Challenge 50x.Wargame/Python Challenge 2017. 6. 8. 14:49
0x05.Python Challenge 5 문제 주소 : http://www.pythonchallenge.com/pc/def/peak.html 5번째 문제를 풀어보도록 하자. 다짜고짜 발음해봐란다. peak hill -> pickle이 된다. (이건 책에서 본 함수라서 금방 알아차릴 수 있었다 ㅋ) 먼저 pickle 함수에 대해 설명하자면 피클함수는 다음과 같이 사용할 수 있다. pickle.load(load_file) pickle.dump(save_file) pickle 함수는 파이썬 객체를 파일로 쓸 수있고 다시 쉽게 읽을 수 있는 것으로 변환해주는데 사용되는데, 주로 게임 개발에서 플레이어의 진행 정보를 저장할 때 활용된다. 소스코드에 명시되어 있는 banner.p라는 첨부파일의 내용물을 확인해보면..
-
0x04.Python Challenge 40x.Wargame/Python Challenge 2017. 6. 7. 20:35
0x04.Python Challenge 4 문제 주소 : http://www.pythonchallenge.com/pc/def/linkedlist.php 벌써 4번째 문제에 도전하게 되었다. 이번에는 어떨까나. 이번에는 힌트도 없는 것 같다. 역시 소스코드를 뒤적여본다. 소스코드를 보면 urllib를 사용하고 400번 정도가 적당하다고 하는걸로 보아 for문을 돌려서 푸는 문제인 듯하다. 또한 img src가 있는데 문제의 그림을 누르면 다음과 같은 화면이 뜬다. 바로 소스코드에서 뜻하는 NOTHINGS가 5자리 숫자를 뜻하는 것 같다. 그리고 이 나띵은 소스코드의 주소 마지막 부분의 숫자를 뜻했다. 이제 문제 풀이는 다음과 같을 것이다. 첫 번째로 소스코드의 문장을 읽어온다. 다음은 소스코드의 문장에서 ..
-
0x07.정렬 알고리즘:선택, 삽입 정렬0x.알고리즘 2017. 6. 5. 21:01
정렬 알고리즘 정렬 알고리즘은 실생활에서 아주 많이 사용된다. 내부 정렬, 외부 정렬, 비교 정렬, 분배 정렬등 아주 많은 종류가 있지만 아주 간단한 것부터 시작해보자. 가장 간단한 정렬방법은 오름차순과 내림차순일 것이다. 20, 28, 3, 41, 26, 6 위와 같은 순서를 아래와 같이 정렬하는 것을 오름차순 정렬이라고 하고, 그 반대를 내림차순 정렬이라고 한다.(은근 헷갈림;;) 3, 6, 20, 26, 28, 41 아주 간단한 알고리즘이기에 아주 간단하게 구현할 수 있다. void sort(){ int i, j; for(i=1; i
-
0x00.게터(Getter)와 세터(Setter)0x.프로그래밍/JavaScript 2017. 6. 5. 16:41
게터(Getter)와 세터(Setter) 자바스크립트를 공부하다보니 무심코 툭 튀어나온 개념이다. 게터와 세터... 도저히 이해가 안되서 구글링도 하면서 이해를 해서 이렇게 또 포스팅거리가 하나 생기게 되었다. 이렇게 생소한 개념을 아무렇지도 않게 사용할정도로 널리 유즈(use) 되고 있다니 ;; 게터와 세터를 사용하는 주 목적은 캡슐화이다. 캡슐화는 객체의 특정 부분을 사용자가 직접 활용할 수 없게 하는게 목적이다. 다시 말해, 악용될 우려가 있는 특정 속성 또는 메소드를 사용자가 사용하지 못하게 숨기는 역할을 한다. 1234567891011121314151617181920212223242526272829303132333435363738function person(h,w){ if(h