일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 계정계
- 학점은행제무료강의
- python
- 채널계
- 프로그래머스
- Pass By Value
- 맥북셋팅
- it자격증
- 컴퓨터공학학사취득
- 학점은행제
- 맥북환경설정
- fastapi
- 개인프로필스튜디오창업
- union
- Homebrew
- DB
- jdk
- 모놀리식
- 코어뱅킹
- 디렉토리계층구조
- oracleapex
- jdk17
- MSA
- 맥북
- 오라클
- 렌탈스튜디오창업
- 은행IT
- 의사결정나무모형
- SQL
- 코딩테스트
- Today
- Total
목록분류 전체보기 (105)
개발머해니
SQL처음 공부할 때는 알았으려나...? 그동안 실무를 하면서 너무 UNION ALL 에 익숙해져서 둘의 차이를 잊고 있었다! UNION UNION ALL 중복 처리 중복 Row 제외 중복 Row 포함 UNION (= UNION DISTINCT) (SELECT cust_no, lst_lgin_dtm FROM A) UNION (SELECT cust_no, lst_lgin_dtm FROM B) CUST_NO LST_LGIN_DTM ------------------------------- 1111 2022/10/31 10:21:59 1111 2022/11/21 17:49:34 1111 2023/04/02 23:51:01 1111 2023/04/04 09:51:01 두 테이블에서 같은 데이터 row가 2건 이상..
실습 설명 n번째 피보나치 수를 찾아주는 함수 fib_tab을 작성해 보세요. fib_tab는 꼭 tabulation 방식으로 구현하셔야 합니다! 실습 결과 def fib_tab(n): # 이미 계산된 fib 값들을 담는 리스트 fib_table = [0, 1, 1] # n번째 피보나치 수까지 리스트를 하나씩 채워 나간다 for i in range(3, n+1): #print("[%d] fib_table : %s" %(i,fib_table)) fib_table.append(fib_table[i-1]+fib_table[i-2]) return fib_table[n] # 테스트 코드 print(fib_tab(10)) print(fib_tab(56)) print(fib_tab(132)) #[3] fib_tabl..
실습 설명 n번째 피보나치 수를 찾아주는 함수 fib_memo을 작성해 보세요. fib_memo는 꼭 memoization 방식으로 구현하셔야 합니다! 실습 결과 # 캐시에 담긴 n번째 피보나치 수를 반환 def fib_memo(n, cache): #base case if n
실습 설명 이전 과제에서 quicksort 함수를 작성했습니다. # 테스트 코드 test_list = [9, 5, 1, 5, 2, 8, 2, 7, 1, 3, 6, 2, 4, 7, 10, 11, 4, 6] quicksort(test_list, 0, len(test_list) - 1) print(test_list) 그런데 quicksort 함수에 필수로 start와 end 파라미터를 넘겨줘야 한다는 게 조금 거슬리네요. 테스트를 할 때 만큼은 아래처럼 깔끔하게 작성하고 싶은데요. # 테스트 코드 test_list = [9, 5, 1, 5, 2, 8, 2, 7, 1, 3, 6, 2, 4, 7, 10, 11, 4, 6] quicksort(test_list) # start, end 파라미터 없이 호출 print(..
실습 설명 Divide and Conquer 방식으로 quicksort 함수를 써 보세요. quicksort는 파라미터로 리스트 하나와 리스트 내에서 정렬시킬 범위를 나타내는 인덱스 start와 인덱스 end를 받습니다. merge_sort 함수와 달리 quicksort 함수는 정렬된 새로운 리스트를 리턴하는 게 아니라, 파라미터로 받는 리스트 자체를 정렬시키는 것입니다. 실습 결과 # 두 요소의 위치를 바꿔주는 helper function def swap_elements(my_list, index1, index2): temp = my_list[index1] my_list[index1] = my_list[index2] my_list[index2] = temp # 퀵 정렬에서 사용되는 partition 함..
실습 설명 partition 함수를 작성하세요. partition 함수는 리스트 my_list, 그리고 partition할 범위를 나타내는 인덱스 start와 인덱스 end를 파라미터로 받습니다. my_list의 값들을 pivot 기준으로 재배치한 후, pivot의 최종 위치 인덱스를 리턴해야 합니다. 예시 1 Pivot(기준점)은 마지막 인덱스에 있는 5. list1 = [4, 3, 6, 2, 7, 1, 5] pivot_index1 = partition(list1, 0, len(list1) - 1) print(list1) print(pivot_index1) [4, 3, 2, 1, 5, 6, 7] 4 5보다 작은 값들은 왼쪽에, 5보다 큰 값들은 오른쪽에 배치됩니다. 예시 2 Pivot(기준점)은 마지막..
실습 설명 Divide and Conquer 방식으로 merge_sort 함수를 써 보세요. merge_sort는 파라미터로 리스트 하나를 받고, 정렬된 새로운 리스트를 리턴합니다. 실습 결과 def merge_sort(my_list): # base case if len(my_list) < 2: return my_list # my_list를 반씩 나눈다(divide) left_half = my_list[:len(my_list)//2] # 왼쪽 반 right_half = my_list[len(my_list)//2:] # 오른쪽 반 # merge_sort 함수를 재귀적으로 호출하여 부분 문제 해결(conquer)하고, # merge 함수로 정렬된 두 리스트를 합쳐(combine)준다 return merge(..
실습 설명 합병 정렬 알고리즘 중 사용되는 merge 함수를 작성해 보세요. merge 함수는 정렬된 두 리스트 list1과 list2를 받아서, 하나의 정렬된 리스트를 리턴합니다. 실습 결과 def merge(list1, list2): i = 0 j = 0 # 정렬된 항목들을 담을 리스트 merged_list = [] # list1과 list2를 돌면서 merged_list에 항목 정렬 while i list2[j]: merged_list.append(list2[j]) j += 1 else: merged_list.append(list1[i]) i += 1 # list2에 남은 항목이 있으면 정렬 리스트에 추가 if i ..
실습 설명 Divide and Conquer를 이용해서 1부터 n까지 더하는 과정을 코드로 한 번 구현해 봅시다. 우리가 작성할 함수 consecutive_sum은 두 개의 정수 인풋 start와 end를 받고, start부터 end까지의 합을 리턴합니다. end는 start보다 크다고 가정합니다. 실습 결과 def consecutive_sum(start, end): # base case if start == end: return start # 분할 mid = (start + end) // 2 # 정복 return consecutive_sum(start, mid) + consecutive_sum(mid+1, end) # 테스트 코드 print(consecutive_sum(1, 10)) print(cons..
실습 설명 런던에 엄청난 폭우가 쏟아진다고 가정합시다. 정말 재난 영화에서나 나올 법한 양의 비가 내려서, 고층 건물이 비에 잠길 정도입니다. 그렇게 되었을 때, 건물과 건물 사이에 얼마큼의 빗물이 담길 수 있는지 알고 싶은데요. 그것을 계산해 주는 함수 trapping_rain을 작성해 보려고 합니다. 함수 trapping_rain은 건물 높이 정보를 보관하는 리스트 buildings를 파라미터로 받고, 담기는 빗물의 총량을 리턴해 줍니다. 예를 들어서 파라미터 buildings로 [3, 0, 0, 2, 0, 4]가 들어왔다고 합시다. 그러면 0번 인덱스에 높이 3의 건물이, 3번 인덱스에 높이 2의 건물이, 5번 인덱스에 높이 4의 건물이 있다는 뜻입니다. 1번, 2번, 4번 인덱스에는 건물이 없습니..