2015년 7월 13일 월요일

Git 두 개의 커밋 하나로 합치기 | Merge two commits into one commit with Git

http://stackoverflow.com/questions/2563632/how-can-i-merge-two-commits-into-one

2015년 6월 15일 월요일

Internet Explorer 버전 별 CSS 별도 적용 | CSS Style Depending on Internet Exploror Version

<style>
    // common
</style>
<style>
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    // gte IE 10 Here
}
</style>
<!--[if IE 9]>
<style>
    // IE 9 Here
</style>
<![endif]-->
<!--[if lte IE 8]>
<style>
    // lte IE 8 Here
</style>
<![endif]-->

2015년 6월 8일 월요일

알고리즘 피보나치 수열

피보나치 수열은 알고리즘에서 자주 등장하는 소재다.
일종의 숫자의 집합이라고 볼 수 있는데,
0, 1, 1, 2, 3, 5, 8, …
이와 같이 0, 1로 시작하며, 세번째 원소부터는
마지막 두 숫자를 더한 값이 되며, 이 조합은 무한히 이어진다.
고로, 8 뒤의 숫자는 5 + 8 = 13 이 된다.
그 다음 원소는 8 + 13 = 21 이 될 것이다.

알고리즘 문제에서 어떤 숫자가 피보나치 수열에 속하는지 아닌지
판별하라면 어떻게 풀어야 할까?

나는 피보나치 수열을 배열로 만든 후,
해당 숫자가 그 배열에 속해 있는지 여부로 판단하는 알고리즘을 짰다.
https://www.hackerrank.com/rest/contests/master/challenges/is-fibo/hackers/lamiru/download_solution

그런데 다른 답안을 보니 상당수가
https://www.hackerrank.com/rest/contests/codesprint5/challenges/is-fibo/hackers/adhikari_suraj/download_solution
이런 식으로 문제를 풀었다.


즉, 해당 숫자를 N이라고 할 때,
5*N*N+4이거나 5*N*N+4이 자연수의 제곱이 되면 된다는 것인데,
왜일까…?

영어판 위키백과에 언급이 되어 있긴 한데….
http://en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fibonacci_numbers

2015년 6월 7일 일요일

2015년 6월 4일 목요일

HackerRank 온라인 코딩 퀴즈 | HackerRank Online coding quiz

각 언어 및 알고리즘, 자료구조에 대한 코딩 퀴즈를 풀 수 있는 사이트다.

특히 알고리즘, 자료구조는 문제를 계속 풀다보면
알고리즘, 자료구조를 제대로 배우지 않은 사람이라도
실력이 향상될 수 있도록 코스가 잘 짜여져 있는 것 같다.

알고리즘, 자료구조는 같은 문제를 어느 언어로 풀어도 상관 없다.
C, C++, C#, Java, Python, Ruby, Perl, JavaScript, PHP 등 주요 언어를 포함해,
무려 30가지 이상의 언어 지원….

다른 사람의 답도 볼 수 있다.
같은 문제에 대해서 사용자 국가별, 프로그래밍 언어별 답안 검색도 가능하다.
GibHub처럼 자신의 1년치 제출 이력도 확인할 수도 있다.

현재 Python 3로 알고리즘을 계속 풀고 있는데
문제를 푸는 것 자체는 어렵지 않지만,
답을 제출하고 다른 사람들의 답과 비교해 보니
역시 훨씬 더 잘 짜여진 코드들이 많이 있다.

책을 통해 공부하는 것보다 훨씬 재미도 있고 도움이 되는 듯.