http://thecodeplayer.com/walkthrough/create-binary-trees-using-javascript-and-html5-canvas


와 멋지다! 코드플레이어도 신기하고, 캔버스 객체도 정말 신기하다 ㅋㅋ

공부해서 꼭 써봐야지.

P.S.

다시 코드플레이어를 들어가보니까..ㅋㅋ

자바스크립트랑 HTML5, CSS3 공부하기 재밌는 사이트를 찾은 것 같다

http://thecodeplayer.com/

Learn HTML5, CSS3, Javascript and more...

Video style walkthroughs showing cool stuff being created from scratch



#1. Count the number of outer loops.

버블 소트에서의 바깥 루프 세기.

약간 최적화된 버블 소트에서의 바깥 루프가 얼마나 도는지 세는 문제입니다.

아래 문제를 보세요 ( 출처 : http://www.acmicpc.net/problem/1377 ).

int i;

for ( i=1; i<=N; i++ ) {

int working = 0;

for ( int j=1; j<=N-i; j++ ) {

if ( arr[j] > arr [j+1] ) {

swap ( arr[j], arr[j+1] );

working = 1;

}

}

if ( !working ) break;

}

printf ( "%d\n", i );

여기서 과연 몇이 출력될까요?

잘 생각해보면 정말 간단합니다.


#2. Count the number of swaps.

버블 소트에서의 스왑 횟수 세기.

이건 아까의 문제보다 약간 더 복잡합니다.

생각이 복잡한건 아닌데, 코딩이 복잡하죠 ㅋㅋ

두 가지의 풀이법이 있는데,

하나는 Binary Indexed Tree ( Low Bit라고도 부르더군요 ) 를 이용한 풀이,

다른 하나는 Merge Sort를 이용한 풀이입니다.

(작성중)


예제를 들어 설명하겠다.

뚜껑이 닫혀있는 통조림 캔이 있다, 이 캔의 두께는 0.4cm이고, 지름은 8cm, 높이는 10cm이다.

이 때, 캔의 부피 (속의 빈 부분은 제외한 캔의 부피) 는 얼만큼인가?

간단한 것 부터 시작해보자.

원통의 부피를 구하는 식은 다음과 같다.

그리고 문제를 다시 생각해보면, 이렇게 해석해볼 수도 있다:

원통의 지름이 4cm에서 4.4cm으로 증가하고, 

높이가 10cm에서 10.8cm (위 아래 뚜껑)으로 증가할 때, 원통의 부피 증가량은 얼만큼인가?

이제 문제가 한결 간단해보인다.

양 변을 적절히 미분하면!

dr = 0.4, dh = 0.8

이제 답을 구할 수 있게 되었다! ㅎㅎ