전체 글

    파이썬에서 정렬을 사용하는 방법

    우선 정렬은 여러분들도 쉽게 아는 것처럼 2개 이상의 데이터를 순차적으로 나열하는 것을 의미합니다. 그렇다면, 프로그래밍 과정에서 왜 정렬을 해야할까요? 우선 데이터가 수백 개, 수천 개, 수백만 개가 된다면 순차탐색 이외의 다른 알고리즘을 사용할 수 없습니다. 하지만! 데이터가 정렬되어있다면 우리는 이진 탐색이라는 강력한 알고리즘을 사용할 수 있어요. 이진 탐색은 데이터를 조회하는 경우에 아주 효과적인 알고리즘입니다. 대부분의 경우 삽입, 삭제보다는 데이터를 조회하는 것이 압도적으로 많기 때문에 우리가 프로그래밍 과정에서 정렬을 해야하는 이유 중 가장 큰 이유가 바로 이진 탐색이 가능한 데이터를 만들기 위해서입니다. 그렇다면, 파이썬에서 정렬은 어떻게 사용할까요? 우선 파이썬에서는 sort()와 sor..

    백준 1904 01타일 [파이썬] 부셔보자 !

    문제 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다. 그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수열을 만들 수 없게 되었다. 예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다. (01, 10은 만들 수 없게 되었다.) 또한 N=4일 때는 0011, 0000, 1001, 1100, 1111 등 총 5개의 2..

    백준 9184 파이썬 [ 신나는 함수 실행 ] 부셔보자 !

    문제 재귀 호출만 생각하면 신이 난다! 아닌가요? 다음과 같은 재귀함수 w(a, b, c)가 있다. if a 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1) 위의 함수를 구현하는 것은 매우 쉽다. 하지만, 그대로 구현하면 값을 구하는데 매우 오랜 시간이 걸린다. (예를 들면, a=15, b=15, c=15) a, b, c가 주어졌을 때, w(a, b, c)를 출력..