모여서 각자 코딩
-
[2021 하계 모각코] 5차시모여서 각자 코딩/2021 하계 모각코 2022. 3. 15. 01:07
너비 우선 탐색 알고리즘 그래프 탐색 시 탐색 방법 중 하나이다. 그래프 탐색은 하나의 정점에서 시작하여 차례대로 모든 정점들을 한번씩 방문하는 것이다. 루트노드 또는 임의의 노드에서 시작하여 인접한 노드를 먼저 탐색하는 방법으로 탐색 시에 너비를 우선으로 하는 알고리즘이다. 즉 시작 노드에서 가까운 노드를 먼저 방문하고 멀리 떨어져있는 노드를 나중에 방문하는 순회 방법이다. 너비우선탐색은 최단 경로를 찾거나 임의의 경로를 찾고자 할 때 사용한다. 노드에 대한 방문 여부를 검사해야하기 때문에 큐 자료구조를 사용하여 방문한 노드들을 저장하고 꺼낼 수 있도록 한다. 큐는 선입선출로서 방문한 노드를 삽입하고 선출 노드의 인접노드를 삽입함으로써 사용한다. 재귀적으로 동작하지 않기 때문에 반복문을 사용하여..
-
[2021 하계 모각코] 4차시모여서 각자 코딩/2021 하계 모각코 2022. 3. 15. 01:06
정렬 알고리즘 1. 선택 정렬 오름차순 정렬일 경우 제일 작은 값을 골라 차례 차례 제일 작은 인덱스부터 집어넣는다. 즉 현재 인덱스에서 최대 인덱스까지 값들 중에 최소값을 선택하여 현재 인덱스에 집어넣고 인덱스를 증가시킨 후 이과정을 반복한다. 내림차순 정렬일 경우 제일 작은 값을 고르는 것이 아닌 제일 큰 값을 고르면 된다. 2. 버블 정렬 현재 인덱스의 배열 값과 다음 인덱스의 배열 값을 비교해 오름차순, 내림차순 조건에 따라 조건에 부합하면 교화하는 식의 정렬이다. 오름차순 일경우 현재 인덱스와 다음 인덱스의 두 값을 비교해 오른쪽 값이 더 작을경우 교환한다. 이렇게 하면 처음 한번 실행했을 때 마지막 인덱스에 제일 큰값이 오게 되고 다음 턴에서는 마지막 인덱스를 제외하고 교환하..
-
[2021 하계 모각코] 3차시모여서 각자 코딩/2021 하계 모각코 2022. 3. 15. 01:04
브루트포스 알고리즘 brute: 무식한, force: 힘 무식한 힘 완전 탐색 알고리즘으로 가능한 모든 경우의 수를 탐색하면서 조건에 맞는 결과만을 선택한다. 컴퓨터에게 계산을 맡김으로써 무조건 결과를 얻는 강력한 방법이다. 브루트 포스 문제를 해결하기 위해선 어떤 구조에서도 모든 자료 탐색이 가능해야하기 때문에 구조에 따라 방식이 나뉜다. 선형 구조의 경우 모두 탐색하기 위해서 가장 간단한 방식인 순차탐색이 가능하다. 비선형 구조의 경우 모두 탐색하기 위해선 깊이 우선 탐색과 너비 우선 탐색이 있다. 순차 탐색 순차탐색으로 문제를 해결하는 방법은 다음과 같다. 1. 주어진 문제를 선형 구조로 구조화한다. 2. 구조화된 자료를 구조에 맞는 방식으로 해를 구할 때까지 탐색한다. 3. 탐색된 해를 정리하..
-
[2021 하계 모각코] 2차시모여서 각자 코딩/2021 하계 모각코 2022. 3. 15. 01:03
그리디 알고리즘 그리디 알고리즘은 최적해를 구하는 상황에서 사용하는 알고리즘으로 여러 경우 중 하나를 선택할 때 그 상황에서 가장 좋다고 생각하는 것을 선택하는 알고리즘이다. 즉 미래를 생각하지 않고 각 단계에서 최선의 선택을 하는 것이다. 따라서 탐욕 알고리즘이라고도 한다. 최적화 문제에서 동적 프로그래밍 사용 시 지나치게 많은 일을 하기 때문에 착안된 알고리즘이다. 동적 프로그래밍을 대체하는 것은 아니고 같이 쓰이며 서로 보완하는 개념이다. 각 단계의 최적해를 선택하기 때문에 전체 최적해를 보장해주지 않는다. 대표적인 예제로 거스름돈, 활동 선택 문제, 분할 가능 배낭문제가 있다. ex> 거스름돈 : 주어진 금액에 대해 최소 개수의 동전으로 거스름돈을 거슬러 준다. 알고리즘 : ..
-
[2021 하계 모각코] 1차시모여서 각자 코딩/2021 하계 모각코 2022. 3. 15. 01:00
다이나믹 프로그래밍 한번에 하나의 문제만 풀도록 하는 알고리즘이다. 큰 문제를 작은 문제로 나누어 푸는 문제로서 분할 정복과 비슷하지만 큰문제를 단순히 작은 문제로 나누어 푸는 분할정복과 다르게 다이나믹 프로그래밍은 작은 부분 문제들이 중복으로 일어난다. 이런 부분 문제들이 중복으로 일어나는 다이나믹 프로그래밍 방식은 정답을 구한 반복되는 문제들을 어딘가에 메모해놓고 이 메모한 문제를 사용하여 반복되는 문제를 해결한다. 이를 Memoization이라고 한다. 대표적인 예로 피보나치 수열이 있다. 피보나치 수열은 재귀적으로 또는 반복문으로 해결할 수 있는데 F[n] = f(n-1) + f(n-2) 의 점화식을 가진다. 구하려는 n번째 수열을 수열의 n-1, n-2값을 사용하여 구하기 때문에 반복적으..
-
[2020 하계 모각코] 총 정리모여서 각자 코딩/2020 하계 모각코 2022. 3. 14. 00:55
2020년도 충남대학교 Bottom Up 대회에 참여하면서 Mask Keeper라는 App을 개발했다. https://github.com/bottomUP2020/Mask-Keeper GitHub - bottomUP2020/Mask-Keeper Contribute to bottomUP2020/Mask-Keeper development by creating an account on GitHub. github.com 웹 프로그래밍을 잘 하지 못할 때여서 하계 모각코를 통해 웹 프로그래밍을 공부하면서 동시에 개발을 진행하기로 목표를 잡았다. 초반 차시에는 문제정의와 웹 프로그래밍 공부를 했고, 이후에는 매 차시마다 팀원끼리 현 개발 상황과 문제점들을 토의하고 고쳐나갔다. 실제 포스팅한 시간보다 더 많은 시간을 ..
-
[2020 동계 모각코] 최종 회고모여서 각자 코딩/2020 동계 모각코 2022. 3. 14. 00:42
2021.01.24 ● 처음 정해진 목표는 파이썬 공부 이후 리눅스까지 해보는 것이 목표였지만 생각보다 파이썬의 모듈인 넘파이, 판다스, 맷플롯이 공부의 양도 많고 어려워서 이번 모각코에서는 파이썬 공부만을 하게 되었다. ● 리눅스 공부를 하지 못한 것이 아쉬웠지만 파이썬 만큼은 공부하고자 했던 목표대로 잘 끝내서 뿌듯했다. 모각코가 끝나더라도 모각코 기간동안 했던 것처럼 리눅스 공부도 해볼 것이다. ● 모각코를 통해 팀원들과 공부하면서 방학동안 헤이해질 수 있던 마음을 붙잡고 의지를 가지며 공부할 수 있었다. 또한 선배들과 같이 하다보니 모르는 것은 질문도 하고 공부의 방향성을 잡는데 많은 도움이 되었다. 더불어 3시간이라는 시간동안 이어서 공부를 하다보니 더 집중력 있게 공부할 수 있어서 공부..
-
[2020 동계 모각코] 6차시 - 결과모여서 각자 코딩/2020 동계 모각코 2022. 3. 14. 00:41
● matplotlib 모듈을 사용하여 다양한 시각화 방법을 공부 할 것이다. 다음의 사이트를 참고하였다. https://datascienceschool.net/01%20python/05.00%205%EC%9E%A5%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%8B%9C%EA%B0%81%ED%99%94.html 5장 데이터 시각화 — 데이터 사이언스 스쿨 datascienceschool.net ● 시각화 패키지인 matplotlib이 무엇이고 이 모듈의 여러가지 플롯의 사용방법, 삼각 그리드의 사용법, seaborn 모듈을 통한 데이터 분포의 시각화 방법, pandas의 시각화 기능을 공부하였다. https://github.com/GwakMirae/2021_Python/tree..