Giter VIP home page Giter VIP logo

2024-여름방학 알고리즘 스터디(백준)

진행 기간 2024년 7월 1일 ~ 2024년 8월 31일
스터디 장소 고려대 SK미래관 스터디룸
정기 스터디 시간 금요일 13:00 ~ 15:00[2h]
플랫폼 백준
언어

스터디 멤버

JaeH0ng
스터디장
Alchernix jasonwayn rlaau prestoo83

스터디 규칙

  1. 문제 풀이 - 개별, 이론 + 풀어온 문제 리뷰 : 스터디 통해 진행

    • 주차가 쌓이면서 익숙해지면, 같이 모여서 시간 정해두고 한 문제를 풀어보는 방법도 고려하겠습니다.
  2. 각자 진행 상황에 맞춰 다섯 문제를 풀고, github에 자신의 코드를 업로드합니다.(아래 깃허브 업로드 방법 참고)

    • 문제표에 자신에게 할당 된 문제가 있습니다. 해당 문제의 풀이에 대해서 발표를 할 예정이니, 잘 준비하여 오시기 바랍니다.
  3. 매주 스터디가 끝날 때, 그 다음주 스터디에 대한 진행자 1인을 선정합니다.

    • 진행자는 다음 주차 주제에 대한 30분 분량의 발표를 준비해옵니다.
    • 30분 분량의 발표자료를 만든 뒤, 목요일(스터디 전날) 밤 12시까지 발표 자료폴더에 업로드합니다.
  4. 스터디는 상황에 따라 온/오프라인으로, 주 2시간 씩 진행합니다.

    • 요일&시간 : 금요일 오후 13시~
    • 장소 :
      • (온라인) zoom
      • (오프라인) 고려대학교 sk미래관 스터디룸
  5. 1주차 스터디 이후로는 스터디 인원을 픽스할 예정이고, 중도 이탈에 대해서는 벌금을 강하게 받겠습니다. 남은 스터디원들의 혼란을 줄이기 위함입니다.(이탈은 1주차 스터디 전까지, 잘 고민해주시기 바랍니다.)

스터디 순서

  1. 이론 개념 설명 - 40분 : 진행자 이론 발표, 참여자 피드백

    • 진행자는 자신이 학습한 이론 내용에 대해 30분 동안 발표를 합니다. 이때 스터디원들은 진행자가 전날 올린 발표 자료를 다운 받아옵니다.
    • 진행자의 발표가 끝난 뒤에, 참여자들은 10분 간 이론에 대해 추가되었으면 하는 내용 혹은 각자 자신이 알고리즘 학습을 하며 새롭게 알게 된 내용에 대해 피드백합니다.
  2. 문제풀이 - 20분 : 진행자 5문제 소개

    • 20분 간 진행자는 과제 5문제에 대해 간략한 개념을 설명하고, 이후 참여자들은 서로 작성해온 코드를 확인합니다.(이때 코드 읽는데에 많은 시간을 배정할 수 없으므로, 스터디 전에 미리 보고 오셔도 좋습니다) - 1시간 : 각자의 코드 리뷰, 피드백, 문제에 대한 의견 공유
    • 1시간 동안 각자 코드의 피드백을 공유한 뒤, 다른 사람의 코드로부터 새로 배우게 된 내용, 생각 등을 공유합니다.

4주차가 지나고 중간 점검을 할 예정입니다. 스터디 진행방식에 대해 어떻게 생각하시는지, 더 나은 개선점이 없을지, 무엇이 불편했는지에 대해 이야기해볼 생각입니다.

깃허브 업로드 방법

  1. 이 저장소를 fork 한다.(잔디 심기를 하려면 꼭 fork 해서 사용하셔야 합니다!)
  2. 생성된 저장소에 이름 혹은 Github ID로 폴더를 생성한다.
  3. 생성된 폴더에 자신의 소스코드를 업로드한다.
    • 이때 commit 규칙을 지키도록 한다!
  4. 원본 저장소로 Pull Requiest(이하 PR)를 보낸다.
    • 이때 PR 규칙을 지키도록 한다!

commit 규칙

문제 풀이

  • commit 메시지 : [X주차]_BOJ_문제번호_문제이름_난이도_걸린 시간
  • 타인 코드를 적은 경우 : [X주차]_BOJ_문제번호_문제이름_난이도_걸린 시간 못 푼 이유 or 핵심적이었던 부분 작성
  • description(optional) : 문제 주소
  • 터미널에서 작성법:
git commit -m "[1주차]_BOJ_2557_Hello World_브론즈5_5분" -m "https://www.acmicpc.net/problem/2557"

발표자료(개념)

  • commit 메시지 : [DOCS]주제명_이름
  • ex. [DOCS]스택_큐_JaeH0ng

PR 규칙

  • PR 제목 : 이름_날짜_문제번호
    • ex. JaeH0ng_240629_2588
  • fork 저장소에서 이 base 저장소로 PR를 보낼 때, create pull request를 누르면 된다.
  • (optional)이때 comment를 남겨서 어떤 부분에서 어떤 오류가 있었고 어떻게 대처했는지 작성한다.

백준 문제 표

  • 첫주차를 제외한 모든 주차에는 5개의 필수 문제와 1~2개의 도전 문제를 넣어뒀습니다.
    • 필수 문제 : 5개(5개 아닌 주도 있습니다!) 문항
    • 도전 문제는 필수가 아니며, 과제를 마친 뒤 추가적인 문제를 풀어보고 싶으신 분들은 풀어보시면 됩니다.
  • 문제를 다양한 자료구조 및 방법으로 해결할 수 있으므로, 따라서 저희는 주제에 맞는 풀이를 우선적으로 스터디하겠습니다.
  • 모든 범위를 다룰 수는 없었습니다(8회 스터디라는 짧은 기간, 학습 정도 등). 다만 저희가 스터디를 통해 주체적으로 코드를 짜보는데에 큰 의미가 있을 거라고 생각합니다.

403 forbidden 에러

주소창 클릭 후 그대로 엔터 치면 문제 사이트로 연결됩니다. 백준에서 접근을 막아둔 것 같은데, 해결 방법을 좀 더 찾아보겠습니다

주차 주제 문제 링크 문제 제목 난이도
0주차 깃허브 사용법 익히기 2588번 곱셈 브론즈3
0주차 깃허브 사용법 익히기 11718번 그대로 출력하기 브론즈3
------ -------- ----------- ------------ -----------
1주차 스택 17608번 (prestoo83) 막대기 브론즈4
1주차 스택 9012번 (jasonwayn) 괄호 실버4
1주차 스택 10828번 (Alchernix) 스택 실버4
1주차 11866번 (rlaau) 요세푸스 문제 0 실버5
1주차 26043번 (JaeH0ng) 식당 메뉴 실버4
1주차 1966번 프린터 큐 실버3(도전문제)
1주차 스택 15500번 이상한 하노이 탑 실버2(도전문제)
------ -------- ----------- ------------ -----------
2주차 11004번 (jasonwayn) K번째 수 실버5
2주차 우선순위 큐 1417번 (Alchernix) 국회의원 선거 실버5
2주차 트리 14244번 (rlaau) 트리 만들기 실버5
2주차 트리 9372번 (JaeH0ng) 상근이의 여행 실버5
2주차 1927번 (prestoo83) 최소 힙 실버2
2주차 이진트리순회 1991번 트리 순회 실버1(도전문제)
------ -------- ----------- ------------ -----------
3주차 DFS&BFS 1260번 (Alchernix) DFS와 BFS 실버2
3주차 DFS&BFS 2606번 (rlaau) 바이러스 실버3
3주차 DFS&BFS 1012번 (JaeH0ng) 유기농 배추 실버2
3주차 DFS&BFS 7576번 토마토 골드5
------ -------- ----------- ------------ -----------
4주차 해시 9933번 (rlaau) 민균이의 전화번호 브론즈1
4주차 해시 10815번 (JaeH0ng) 숫자 카드 실버5
4주차 해시 7785번 (prestoo83) 회사에 있는 사람 실버5
4주차 해시 4158번 (jasonwayn) CD 실버5
4주차 해시 9375번 (Alchernix) 패션왕 신해빈 실버3
4주차 해시 4358번 생태학 실버2(도전문제)
------ -------- ----------- ------------ -----------
5주차 그래프이론 1388번 (JaeH0ng) 바닥 장식 실버4
5주차 그래프이론 16173번 (prestoo83) 점프왕 쩰리 (small) 실버4
5주차 그래프이론 10451번 (jasonwayn) 순열 사이클 실버3
5주차 그래프이론 11724번 (Alchernix) 연결 요소의 개수 실버2
5주차 최단 경로 문제 18352번 (rlaau) 특정 거리의 도시 찾기 실버2
5주차 최단 경로 문제 11403번 경로 찾기 실버1(도전문제)
------ -------- ----------- ------------ -----------
6주차 DP 2775번 (prestoo83) 부녀회장이 될테야 브론즈1
6주차 DP 1010번 (jasonwayn) 다리 놓기 실버5
6주차 DP 9655번 (Alchernix) 돌 게임 실버5
6주차 DP, 그리디 2839번 (rlaau) 설탕 배달 실버4
6주차 DP 1463번 (JaeH0ng) 1로 만들기 실버3
6주차 DP 1149번 RGB거리 실버1(도전문제)
------ -------- ----------- ------------ -----------
7주차 그리디 4796번 (Alchernix) 캠핑 브론즈1
7주차 그리디 1789번 (rlaau) 수들의 합 실버5
7주차 그리디 11399번 (JaeH0ng) ATM 실버4
7주차 그리디 11047번 (prestoo83) 동전 0 실버4
7주차 그리디 13305번 (jasonwayn) 주유소 실버3
7주차 그리디 1931번 회의실 배정 실버1(도전문제)
------ -------- ----------- ------------ -----------
8주차 이분탐색 10815번 (rlaau) 숫자 카드 실버5
8주차 이분탐색 1920번 (JaeH0ng) 수 찾기 실버4
8주차 이분탐색 1072번 (prestoo83) 게임 실버3
8주차 이분탐색 7795번 (jasonwayn) 먹을 것인가 먹힐 것인가 실버3
8주차 이분탐색 2343번 (Alchernix) 기타 레슨 실버1
8주차 이분탐색 2470번 두 용액 골드5(도전문제)

학습 시 참고자료

  • 아래는 학기 중에 제가 잘 참고한 유용재 교수님의 강의영상 자료입니다. 저희는 시간 관계 상 강의를 같이 듣진 않겠지만, 아래 강의의 순서를 기반으로 주차 순서를 구성하였습니다. 학습에 도움이 되시리라 생각합니다.
  • 왼쪽이 자구, 오른쪽이 알고입니다.
번호 주제 유튜브 링크 번호 주제 유튜브 링크
1 Python 기초 문법 및 시간복잡도의 이해 Link 1 시간복잡도와 공간복잡도의 이해 Link
2 Linked List와 연결형 자료구조 Link 2 정렬과 탐색을 위한 효과적인 방법 Link
3 Stack 자료구조의 이해와 응용 Link 3 동적계획을 이용한 문제 해결 성능 제고 Link
4 Queue와 환형 Queue의 이해 Link 4 기초 정수론과 암호화 알고리즘 Link
5 우선순위 Queue와 이진 Tree의 기초 Link 5 백트래킹을 이용한 해의 탐색과 그 실제 Link
6 이진 Tree의 구현과 데이터 순회 Link 6 휴리스틱과 욕심쟁이 알고리즘 Link
7 균형을 고려한 여러 가지 Tree Link 7 분할정복의 뜻과 문제 해결에의 적용 Link
8 Hash Table을 통한 데이터의 적재 Link 8 Python을 이용한 기하 알고리즘 입문 Link
9 Graph의 뜻과 여러 가지 구현 방법 Link 9 경우의 수 계산을 위한 기초 조합론 Link
10 Graph에 기반한 최적 Tree 산출 Link 10 기계학습에서의 알고리즘과 그 토대 Link
11 Graph에서의 최적 경로 문제와 해법 Link 11 확률적 알고리즘을 이용한 문제 해결 Link
- - - 12 P-NP 문제와 알고리즘의 내일 Link

이론 발표 준비 시 체크사항

  • 시간복잡도와 공간복잡도도 체크한 뒤, 해당 자료구조/알고리즘의 장단점을 비교하기
  • 30분이 생각보다 길지 않으니 최대한 핵심 위주로
  • 이론 피드백 이후, 새로 알게 된 사실도 꼭 메모해서 정리하기

스터디 주의 사항

  • 각 언어별 문법은 다루지 않겠습니다.
  • 한 문제를 푸는 데 1시간이 걸려도 안 풀리는 경우, 타인의 코드를 참고할 수 있습니다.
    • 1시간은 무조건 혼자서 도전해봐야 의미가 있으며, commit 규칙을 참고하여 작성해주시기 바랍니다.

해당 README는 다음의 레파지토리와 블로그 글들을 참고하여 제작하였습니다.

jasonwayn's Projects

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.