시간복잡도 썸네일형 리스트형 [알고리즘] 2차원으로 만들기 리스트 내부에 반복문 함수 프로그래머스 level 0 이제는 좀 더 심화해서 리스트 내의 함수를 사용해서 불필요한 반복문을 줄여보기로 했다. 데이터 분석 및 모델링 시 데이터 전처리가 중요한 부분이나 그렇게 까지 신경쓰지 못했던 부분들이 있었다. 컴공 출신이 아니라 그런지 더더욱 교육의 부재가 크게 느껴졌다. 어떻게 하면 효율적으로 코딩할 수 있을지. 간결함 뿐만 아니라 시간 복잡도의 효율성을 고려해서 짜고 싶어졌다. 습관적으로 함수를 생성할 때, 변수를 만들고 또 새로운 리스트를 생성하고 생성하고 생성하고... 해서 for 문, if, else를 불필요하게 많이 사용했다. 그런데 최종적으로 리스트에 결과가 나오도록 하려면 리스트 내에 함수를 사용할 수 있다는 것을 알게 되어 2차원 만들기 코딩할때 도전해봤다. def solution(num_list, n).. 더보기 [알고리즘] 왜 시간복잡도에 로그가 들어가지? O(nlogn)?.. 많은분들이 시간복잡도 하면 보통 O(logn) 으로 표현되니 그런가보다..(와이와이???) 하고 넘기실텐데 로그가 왜 들어가는지 의아하신 분들을 위한 글 입니다. 앞선 글에서 분할 정복 알고리즘을 설명한 바 있습니다. 예를 들어봅시다. (배열을 반으로 나누는 과정은 매 단계마다 배열을 절반으로 나눕니다 따라서 주어진 배열의 크가 n 일때) Step 1 : n을 2로 나눕니다 (n/2) Step 2 : n/2를 다시 2로 나눕니다 (n/2) Step 3 : n/4를 다시 2로 나눕니다 (n/8) 이러한 과정을 k 번 반복하여 배열의 크기가 1이 될때까지 반으로 나눈다. 이 과정에서 배열의 크기가 1이 될때까지 몇번의 나누기가 필요한가요? 위 과정에서 배열의 크기가 1이 되기 위해서는 앞선 Step 에서 분.. 더보기 [알고리즘] 시간복잡도 분할과 정복 분할 정복 알고리즘 분할 정복 알고리즘은 문제를 작은 하위 문제로 분할하고, 각 하위 문제를 재귀적으로 해결한 후, 그 해결책들을 합쳐서 원래 문제의 해결책을 구하는 알고리즘이다. 분할 정복의 전형적인 예시로 합병 정렬을 들 수 있는데, 합병 정렬은 배열을 반으로 나누고, 각 반을 정렬한 후에 두 개의 정렬된 반을 합쳐서 전체 배열을 정렬하는 과정을 거친다. 분할 정복 알고리즘은 문제를 작은 단위로 쪼개서 해결하기 때문에 대규모 문제를 효과적으로 해결할 수 있는 장점이 있지만 이 알고리즘을 사용할 때에는 문제를 적절하게 분할하고, 재귀적인 해결과 합병 과정을 적절히 구현해야 한다. 그렇다면 재귀적인 해결 방법이 뭘까? 재귀적 해결방법에 대한 언급이 많이 나와있으나 나에게 확실히 와닿지 않았다. 그말은 그.. 더보기 이전 1 다음