완전탐색을 할 때 주로 쓰이는 파트이므로 꼭 알아야하므로 한번 더 리뷰하려고 한다. 물론 재귀를 사용하는 중요한 방법이고 중복순열과 일반 순열이 있으니 두개 다 알아보도록 하자. 순열(Permutation)이란? 서로 다른 N개에서, R개를 중복없이 순서를 고려하여 나열한 것 [경우의 수 = N * (N - 1) * (N - 2) ... (N - R + 1)] 예를들어 0, 1, 2 로 구성된 3장의 카드들이 여러장 존재하는데, 이 중 2장을 뽑아 순열을 나열해 보자. 그렇다면 해당하는 순열은 [0 1] [0 2] [1 0] [1 2] [2 0] [2 1] 으로 총 6개임을 알 수 있다. 중복순열은 서로다른 N개에서 R개를 중복 허용, 순서를 고려하여 나열하는 것 [경우의 수 = N**R] 위와 같은 예..
알고리즘 풀면서 가장 많이하는 두가지 인 것 같다. 반복문을 사용하느냐, 함수의 재귀 호출을 사용하는가를 선택하는 것은 중요하다. 개인적을 재귀 호출을 잘 사용하지 못하다 보니 반복문을 사용하는데, 이렇게 되면 코드가 쓸 때 없이 길어지며 재귀를 사용하지 않고는 문제를 해결할 수 없는 문제가 생긴다. 재귀는 어려운 개념이지만, 간단하고 깔끔하게 함수식을 통해 풀 수 있다는 장점이있다. 가장 큰 단점으로 느껴지는 것은 함수 재귀 호출 시 디버깅이 어렵다는 단점이 있는 것 같다. (아직 안익숙해서 그런 것일지도..) 아무튼 중요하다보니 한번 이해하고 정리할 겸 짚어보려고 한다. 반복(Iteration) : 수행하는 작업이 완료될 때 까지 계속 반복한다 루프 (for, while 구조) 반복문은 코드를 n 번..
이전에 완전 탐색을 baby-gin을 통해 다룬 적이 있다. 대신 그때는 순열과 재귀를 제대로 배우지 않았기 때문에, 그리디 탐색을 이용해서만 해결했고, 이번에는 완전 탐색을 이용해서도 풀어볼 예정이다. 이외 다른 유형의 문제 2문제도 다뤄보려고 한다. Brute-Force 알고리즘 ( = 완전탐색) : 모든 가능한 경우를 시도해서 정답을 찾아내는 알고리즘 간단한 예시로는 좌물쇠 비밀번호가 있다. 0부터 9까지 3자리 숫자를 맞춰야 좌물쇠가 열리는데, 이때 반복문을 사용하여 모든 경우를 나열할 수 있고, 재귀를 이용한 중복순열을 통해서도 가능하다. for i in range(10): for j in range(10): for k in range(10): print(i, j, k) ''' 0 0 0 0 0..
- Total
- Today
- Yesterday
- Sequence types
- Database
- baby-gin
- app
- vue3
- 중복순열
- CRUD
- views.py
- dfs
- 함수
- JavaScript
- basic syntax
- vue
- Authentication System
- 연산자
- SQLite
- HTML
- Python3
- Python
- Method
- CodeTree
- 백준
- 재귀
- Serializer
- 순열
- 카운팅정렬
- restapi
- Django
- ChatGPT
- SQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |