![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cLYxak/btq69TBtI6J/NHORv43wDeNQRBae4mNcrk/img.jpg)
코드잇 강의를 듣고 정리한 알고리즘 문제들 입니다. Brute Force : 무차별 대입으로 가능한 모든 경우에 대해 모두 탐색하여 조건에 충족되는 결과만 가져옴 장점 : 직관적이고 명확, 답을 확실하게 찾을 수 있음 단점 : 비효율적임 그럼에도 불구하고 알아야하는 이유 : 효율적인 알고리즘을 찾는 가장 기본적인 접근 방법이기 때문 1. 카드 뭉치 최대 조합 구하기 조건 -함수명 : max_product -매개변수명 : 카드 뭉치1(left_cards), 카드 뭉치2(right_cards) -카드 뭉치1과 카드 뭉치2에서 카드를 하나 뽑아서 곱했을 때 그 값이 최대가 되는 값을 반환 풀이 # 시간 복잡도 : O(mn) (m은 left_cards의 갯수, n은 right_cards의 갯수) def max_..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/2MbrS/btq69WR57P1/qypH9KXpSVgtguwxSO1J1K/img.jpg)
코드잇 강의를 듣고 정리한 알고리즘 문제들 입니다. 재귀 함수(Recursive Function) : 자기 자신을 호출하는 함수 재귀적으로 문제를 푼다는 것 : 부분 문제(같은 형태의 더 작은 문제)의 답을 이용해서 기존 문제를 푸는 것 1. 피보나치 수열 구현하기 조건 -함수명 : fib -매개변수명 : 받을 자연수(n) -10번째 항까지 출력하기 풀이 # 시간 복잡도 : O(2^n) def fib(n): # base case if n < 3: return 1 # recursive case return fib(n-1) + fib(n-2) # 테스트 for i in range(1, 11): print(fib(i)) 2. 숫자 합 구하기 조건 -함수명 : triangle_number -매개변수명 : 받을 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ExQHa/btq6WiIgiC6/DHEuZOJ3m1MNGzUcEJa5ek/img.jpg)
코드잇 강의를 듣고 정리한 알고리즘 내용 입니다. 1. 알고리즘 평가의 기준 1) 시간복잡도 : 얼마나 빠르게 실행되는지 2) 공간복잡도 : 얼마나 많은 공간이 필요한지 2. 복잡도 계산과 관련해서 알고 있으면 좋은 수학 개념 1) 거듭제곱 2) 로그 3) 1~n 까지의 합 3. 점근 표기법(Big-O Notation) 1) 점근 표기법 - 원 함수를 단순화시켜 최고차항의 차수만 고려하는 것 - ex) 원 함수 : 2(n^2) + 8n + 157 / 점근 표기법 : O(n^2) 2) 점근 표기법의 의미 - n의 차수가 클수록 시간이 많이 소요된다는 것을 알 수 있음 - 컴퓨터의 사양이 아무리 좋아도, 아무리 빠른 언어로 코딩을 해도 알고리즘이 별로면 한계가 있다는 것을 알려줌 4. 알고리즘 평가 주의 사..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cuwyIh/btq6WhhNykv/bZjaW5YXGRa4VcSgk0y5z1/img.jpg)
선택 정렬 : 가장 작은 데이터를 선택하여 맨 앞 부터 순서대로 정렬해 나가는 알고리즘 거품 정렬 : 오른쪽부터 인접한 두 개의 원소를 비교하여 자리를 교환하는 방식의 정렬 알고리즘 삽입 정렬 : 모든 요소를 앞에서 부터 정렬 범위를 확장시켜나가며 정렬을 진행하는 알고리즘 1. 선택 정렬(Selection Sort) 구현 ''' # 시간복잡도 (n^2) ''' def selection_sort(lst): for i in range(len(lst)-1): # 최저점 min_idx = i for j in range(i+1, len(lst)): if lst[min_idx] > lst[j]: min_idx = j lst[i], lst[min_idx] = lst[min_idx], lst[i] return lst ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bFxlbO/btq6V4g9eui/5080FO4XaDT45J9FCKSPJk/img.jpg)
코드잇 강의를 듣고 정리한 알고리즘 문제들 입니다. 선형 탐색 알고리즘 : 리스트의 처음부터 끝까지 순서대로 처음부터 하나씩 탐색하여 값을 찾는 것 이진 탐색 알고리즘 : 정렬된 리스트를 반씩 나누어 검색하여 값을 찾는 것 1 . 선형 탐색(Linear Serch)알고리즘 구현해보기 조건 -함수명 : linear_search -매개변수명 : 탐색할 값(element), 받을 리스트(some_list) -반환값 : element가 있을 경우 some_list의 인데스 반환, 없으면 None 반환 -for문 사용, element in some_list 사용 금지 풀이 # 시간 복잡도 : O(n) def linear_search(element, some_list): for i in range(len(some_..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/M54jw/btq6VrwOnnt/ew9XFAZI38OAsed6Pswy80/img.jpg)
코드잇 강의를 듣고 정리한 알고리즘 문제들 입니다. 컴퓨터 알고리즘 : 컴퓨터가 어떤 문제를 해결하기 위해서 컴퓨터가 이해할 수 있는 방식으로 정리되어 있는 해결 방법 1. 팔린드롬 체크 함수 구현 - "토마토" 나 "기러기"처럼 거꾸로 읽어도 똑같은 단어를 팔린드롬이라고할 때, 문자열 word가 팔린드롬인지 확인하는 함수를 만들어 해결해보기 조건 -함수명 : is_palindrome -매개변수명 : word -반환값 : 팔린드롬일 시 True , 아닐 시 False 풀이1 -내장함수(join,reversed)사용 def is_palindrome(word): reverse_word = "".join(reversed(word)) if reverse_word != word: return False retur..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bgCPo3/btq6AO1nIdP/QbdiwGSexDbQkybOIqLFp1/img.jpg)
문법정리 4탄 - 제어문 1. 반복문 - while -들여쓰기로 수행부분을 구분 -참일 경우에만 수행부분 실행 -거짓일 경우 while문을 종료함 ''' while 조건문 : 수행부분 ''' # ex) i = 1 while i 0 ~ stop-1 # range(start, stop) => start ~ stop-1 (1만큼 증가) # range(start, stop, step) : start ~ stop-1 (step 만큼 증가) # ex) for i in range(3,11) : print(i) 3. 조건문 - if문 -들여쓰기로 수행부분을 구분 -조건 부분은 불린 값으로 계산되는 식을 써야한다 -수행 부분은 조건을 충족했을 때(참 일때), 실행하고 싶은 부분이다 ''' if 조건 부분 : 수행 부분 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/W7Y3p/btq6zAOMQT1/1HDpYwVUCQQ2RgPv5eXx4k/img.jpg)
문법정리 2탄 - 리스트, 튜플, 집합, 사전 1. 리스트(list) 1)리스트 - 서로 다른 형의 항목 또는 같은 형의 항목들이 묶여 있는 복합 자료형 ''' 리스트명 = [요소1, 요소2, ...] 리스트명 = [] # 빈 리스트 생성 ''' numbers = [2,3,4,5,6,7] 2)인덱싱(indexing) numbers = [2,3,4,5,6,7] print(numbers[0]) # 2 print(numbers[1]) # 3 print(numbers[5]) # 7 print(numbers[-1]) # 7 print(numbers[-6]) # 2 3)슬라이싱(slicing) numbers = [2,3,4,5,6,7] print(numbers[0:6]) # [2,3,4,5,6,7] print(nu..
- 프로그래머스코딩테스트
- 백준
- 유닉스커맨드
- 피보나치
- GIT
- 정렬
- 설치
- 프로그래머스문제
- 코딩테스트
- 문법
- 프로그래밍언어
- 프로그래머스
- Summer/Winter Coding(~2018)
- 프로그래머스 프로그래머스문제
- 컴퓨터개론
- 알고리즘
- 알고리즘문제
- 이진탐색
- 파이썬문법
- level1
- 월간 코드 챌린지 시즌2
- 재귀함수
- 조합
- KAKAO
- SWiFT
- 월간 코드 챌린지 시즌1
- x만큼간격이있는n개의숫자
- level2
- 코드잇
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday