알고리즘 3

[Python] itertools 정리

요즘 완전 탐색 문제를 푸는데 itertools가 필요한 부분이 많다. 정리를 안 해두니 계속 똑같은 레퍼런스 보면서 코딩하는데, 정리해두고 내 포스팅 보면서 공부하려고 정리한다. itertools의 여러가지 기능 중에서도 조합형 이터레이터에 대한 포스팅이다. 설명은 docs.python.org 에서 참고하였다. itertools 효율적인 looping을 위한 iterator를 만드는 모듈 조합형 이터레이터 - product(p, q, ... [repeat=1]) : cartesian product, 중복 조합 - permutations(p[, r]) : 모든 가능한 순서, 반복되는 요소 없음 - combinations(p, r) : 순서 정렬, 반복되는 요소 없음 - combinations_with_r..

Greedy Algorithm

🙂 파이썬 알고리즘 인터뷰를 공부하며 적는 공부 흔적입니다. 그리디 알고리즘 바로 눈 앞의 이익만을 좇는 알고리즘 대부분의 경우에는 뛰어난 결과를 도출하지 못하지만, 드물게 최적해를 보장하는 경우도 있음 최적화 문제를 대상으로 한다. (특히 로컬 최적해) 최적해를 찾을 수 있으면 그것을 목표로 삼고, 찾기 어려운 경우에는 주어진 시간 내에 그런대로 괜찮은 해를 찾는 것을 목표로 함. 그리디 = 탐욕 선택 속성 + 최적 부분 구조 탐욕 선택 속성 : 앞의 선택이 이후 선택에 영향을 주지 않는 것 (선택을 다시 고려하지 않음) 최적 부분 구조 : 문제의 최적 해결 방법이 부분 문제에 대한 최적 해결 방법으로 구성되는 경우 → 이 두 가지 조건을 만족하면 최적해를 찾을 수 있다. (만족하지 않더라도 정답을 근..

[알고리즘] 연결리스트 문자열 삽입

계절 알고리즘 수업을 듣는데, 2일 간은 자료 구조 수업을 한다고 하셔서 이번 주 과제는 연결리스트였다. 지금까지 연결리스트 입력을 숫자로만 받아봤는데, 이번에는 문자열을 받는 과제였다. #include #include typedef struct Node { char* name; char* depart; char* grade; char* gender; struct Node* next; } Node; void insertNode(Node *student, char*name, char*depart, char*grade, char*gender ) { Node* nextStudent = (Node*)malloc(sizeof(Node)); nextStudent->name = name; nextStudent->de..