Develop

알고리즘 유형 : DFS 풀이 참고 : https://velog.io/@kimmainsain/C%EC%96%B8%EC%96%B4-%EB%B0%B1%EC%A4%80-14888-%EC%97%B0%EC%82%B0%EC%9E%90-%EB%81%BC%EC%9B%8C%EB%84%A3%EA%B8%B0 문제 링크 : https://www.acmicpc.net/problem/14888 풀이 요약 각 연산종류마다의 주어진 개수만큼 dfs함수를 실행하여 준다. 이때 x라는 변수를 하나씩 더하여 다음과 같은 사항을 체크한다. 1. dfs 깊이 2. arr 리스트의 인덱스 번호 따라서 주어진 연산 개수만큼 계산이 된다. 그리고 max값을 문제에서 주어진 범위의 가장 작은 수로 제한을 두어 비교하며 업데이트 한다. (min값 동..
· Develop/C
주요 내용 요약 0. 이분탐색 리스트의 특징 - 두개이하의 자식노드를 갖는 트리이며, 루트보다 작으면 왼쪽, 크면 오른쪽으로 자식을 갖는다. - 따라서 inorder로 순회 하면 오름차순의 데이터를 갖게 된다. 1. 삽입 - 루트부터 key값의 대/소를 배교해 작은면 왼쪽, 크면 오른쪽으로 내려가면서 자리를 찾아 삽입 2. 삭제 - 가장 끝(nil)에 있는 노드를 삭제하면 NULL만 자식으로 붙히면 됨 - 중간에 값을 삭제 한다면 두가지 케이스로 나눠진다. 1) 자식 노드가 모두 있을때. - 오른쪽 자식을 루트로 하여 그 자식들 중 최솟값을 갖는 루트의 데이터를 갖져온 후 삭제. 2) 자식 노드가 하나 이하로 있을때. - 둘중에 있는 놈을 자식으로 할당 3. 입력 값 별 순회 데이터(7, 3, 9, 1,..
· Develop/C
중요 부분 1. Struct Node 선언(?) - 참고로 typedef 를 사용하면 편하게 불러올 수 있다. typedef struct NODE { // 노드 선언 struct NODE *next; // 자식 노드 선언 int data; // data 변수 }NODE; 2. 노드 생성 함수 void appendFirst(NODE *target, int newData){ // 첫 번째 노드 생성 NODE *newNode = malloc(sizeof(NODE)); // 첫 노드의 동적메모리 할당 newNode -> next = target -> next; // 헤더 노드의 포인터를 새노드의 포인터로 연결 newNode -> data = newData; // 인자로 받은 데이터를 새노드의 데이터로 할당 ta..
알고리즘 유형 : 백트래킹 풀이 참고 : 없음 문제 링크 : https://www.acmicpc.net/problem/15650 풀이 요약 중복이 없는 배열이 나와야 하므로 for문 에서 i가 인자보다 클때만 재귀를 들어가게 하였다. 코드(python) n, m = map(int, input().split()) arr = [] def dfs(index): if len(arr) == m: print(' '.join(map(str, arr))) for i in range(1, n+1): if i >= index: # 중복을 없에는 재귀 조건 arr.append(i) dfs(i+1) arr.pop() dfs(1) 배운 점, 배울 점 10분도 안걸려서 푼거같다! 기분이가 좋다. 재귀를 많이 다루어 보면서 일반적..
알고리즘 유형 : 백트래킹 풀이 참고 : 없음 문제 링크 : https://www.acmicpc.net/problem/15652 늘 언급하지만 해당 내용은 정확하지 않아 개발 공부에 도움이 되지 않습니다. 그래서 당연히 귀한 시간 내주시어 지적해 주시면 감사 드리겠습니다. 풀이 요약 재귀 시 index 값(i)을 넘기고 해당 값부터 반복문을 돌림 코드(python) n, m = map(int, input().split()) arr = [] def dfs(index): if len(arr) == m: # 재귀 끝 지점 print(' '.join(map(str, arr))) return for i in range(index, n+1): # 반복문의 시작이 이전 i값부터 되도록 arr.append(i) dfs..
알고리즘 유형 : 백트래킹, 재귀 풀이 참고 : 자신 문제 링크 : https://www.acmicpc.net/problem/15649 늘 언급하지만 해당 내용은 정확하지 않아 개발 공부에 도움이 되지 않습니다. 그래서 당연히 귀한 시간 내주시어 지적해 주시면 감사 드리겠습니다. 풀이 요약 어제 풀었던 문제와 동일한 알고리즘이며, 같은 수가 리스트에 들어가지 못하도록 i not in arr 조건 하나를 추가 했다. 코드(python) n, m = map(int, input().split()) arr = [] def main(): if m == len(arr): print(' '.join(map(str, arr))) return for i in range(1, n+1): if i not in arr: ar..
Hong-Kyu
'Develop' 카테고리의 글 목록 (5 Page)