일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 17626
- Kotlin
- 백준
- springboot
- spring security
- 백준 16235
- Spring
- Coroutine
- 백준 15685
- 프로래머스
- spring oauth
- sql 기술면접
- Spring Boot
- java 기술면접
- 파이썬
- MySQL
- 백준 19238
- MSA
- with recursive
- spring cloud
- 백준 16236
- 웹어플리케이션 서버
- 백준 16719
- JVM
- JPA
- java
- 백준 17779
- 프로그래머스
- 백준 파이썬
- re.split
- Today
- Total
목록분류 전체보기 (287)
시작이 반
N과 M 5번 문제는 1부터 n까지 숫자가 있는 것이 아니라 입력으로 n개의 숫자를 임의로 받는다. 이를 list형태로 저장하고 숫자가 작은 것부터 탐색을 해야 하기 때문에 오름차순으로 정렬을 한다. 이후는 기존 n과 m의 풀이 방법과 같다. 대신 반복문의 i를 solve 리스트에 append, pop 하는 것이 아닌 오름차순으로 정렬한 리스트의 i번째 값을 append, pop 한다. n, m = map(int, input().split()) my_list = list(map(int, input().split())) my_list.sort() solve = [] visited = [False] * n def Dfs(depth): if depth == m: print(' '.join(map(str, so..
N과 M 3에서 중복을 제거한 문제이다. 반복문에 if depth == 0 or solve[depth - 1]
N과M 3번째 시리즈이다. 이번에는 방문했던 숫자를 다시 방문할 수 있다. visited를 써서 풀었지만 생각해보니 안써도 될 것 같다. visited를 모두 False로 하고 방문을해도 방문처리를 안한다. n, m = map(int, input().split()) visited = [False] * (n + 1) solve = [] def Dfs(depth): if depth == m: for i in range(m): print(solve[i], end=" ") print() # print(' '.join(map(str, solve))) # join을 사용하여 풀 수 도있다. join은 문자열을 합치는 함수이다. # solve에 있는 원소는 int형이기 때문에 map을 사용하여 string형으로 만들..
15649번에서 오름차순을 하고, 중복을 없앤 방식이다. 1. 재귀를 수행할때 반복문을 시작해야할 숫자를 같이 넣어준다. 현재 i 보다 +1 인 값을 건내줘서 반복문이 그 값부터 시작하게 한다. 2. list의 마지막 원소값을 확인하여 그 값보다 i 가 클경우만 재귀를 수행한다. 깊이가 0일땐 무조건 재귀 ** if depth == 0 or visit_number[len(visit_number) - 1] < i: n, m = map(int, input().split()) visit_number = [] def BackT(start, depth): if depth == m: for i in visit_number: print(i, end=' ') print() return for i in range(sta..
백트래킹의 기초 문제이다. 완전탐색을 하게된다. 재귀를 이용하여 풀게되는데 이때 더이상 탐색을 할 필요가 없다면 재귀 탐색을 멈추게된다. 첫 풀이 해당 숫자에 visited를 부여하여 방문을 했는지 계속 체크하고 visited를 deepcopy하여 넘겨주는 식으로 하였다. 이렇게 하면 숫자가 많아질수록 list를 엄청나게 많이 만들게 되고 또한 deepcopy를 하는데에 시간도 길리기 때문에 메모리, 시간 둘다 비효율적이다. ....... 정답 풀이 visited라는 상태 체크를 하는 것이 아니라, 방문한 숫자를 집어넣는 list를 만들어 풀게 된다. 1. 깊이가 출력하는 숫자의 길이가 같을경우 재귀를 멈춘다. 2. i : 1 ~ n 까지 반복을 하여 list에 i에 해당하는 숫자가 없을경우 i를 app..
경우의 수를 탐색해 나가는 도중 찾는 해가 아니면 이전 상태로 되돌아가서 다시 해를 찾는 방법이다. 주요 개념은 해를 얻을 때까지 모든 가능성을 시도한다는 점이다. 모든 가능성은 하나의 트리처럼 구성할 수 있으며, 가지 중에 해결책이 있다. 트리를 검사하기 위해 깊이 우선 탐색을 사용한다. 탐색 중에 오답을 만나면 이전 분기점으로 돌아간다. 시도해보지 않은 다른 해결 방법이 있으면 시도한다. 해가 되지 않을 것 같다면 그 아래의 탐색은 중지하고 이전 분기점으로 되돌아가는데 탐색 횟수가 줄어들게 된다. 이를 가지치기라고 한다. 즉 가지치기를 얼마나 잘하느냐에 따라서 효율성이 결정된다. 모든 트리를 탐색하게 된다면 해가 없을 것이다. 백트래킹은 기본적으로 완전탐색 카테고리에 있다. 다른 알고리즘 방법으로 해..
MVC란 Model View Controller의 약자로 에플리 케이션을 세가지의 역할로 구분한 개발 방법론이다. 이 패턴을 성곡적으로 사용하면, 사용자 인터페이스로부터 비지니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비지니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. Controller : 사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다. View : Controller로 데이터를 받아서 클라이언트 측 기술인 html/css/javascript를 이용해 표현하는 역할을 한다. 데이터를 따로 보관하지 않고 처리한다. Model : 애플..
알고리즘 하루에 2문제 이상을 목표 푼 문제들은 블로그에 그날 정리 알고리즘 순서 DFS, BFS -> 백트랙킹 ->동적 계획법 -> 그리디 알고리즘 -> 수학관련 문제 -> 스택, 큐, 덱 -> 분할정복 -> 이분탐색 -> 우선순위 큐 -> 동적 계획법 -> 최단경로, 동적 계획법 -> 최단경로 역추적, 동적 계획법 -> 트리 -> 최소 신장트리, 트리에서의 동적 계획법 프로그래머스 단계별 문제 풀기 Level 1 - 완료 Level 2 - 진행중 Level 3 Level 4 Spring https://www.inflearn.com/roadmaps/373 [초급~중급] 우아한형제들 개발팀장 김영한의 스프링 완전 정복 - 인프런 | 로드맵 대세를 따르세요! 자바 스프링 베스트셀러 우형 개발팀장에게 배우는..