Giter Site home page Giter Site logo

study's Introduction

🙌 C++ 알고리즘 스터디


안녕하세요. C++ 알고리즘 스터디장을 맡은 홍찬희라고 합니다.

저는 21년 4월부터 알고리즘을 공부했고, 아무런 정보를 없이 인터넷 검색에만 의존해오면서

알고리즘을 해왔고, 그 과정에서 멘토의 부재로 쓸데없는 시간을 많이 보내기도 하고,

올바르지 못한 공부방법으로 해오기도 했습니다.

그렇기 때문에 나중에 제가 알고리즘을 내 주변 사람들에게 알려줄때에는 좀 더 쉽게 알고리즘에

재미를 느끼게끔 고민을 굉장히 많이 해왔고, 이번 스터디도 개설하게 되었습니다.

스크린샷 2022-03-15 오후 12 06 03

( 중간에 비어있을때 문제 안푼거아님!! ㅋㅋㅋ 자바로 푼문제 또 풀어본거임! )


📘 스터디를 통해 얻어갈 수 있는 것!


특히, 우리 학교는 알고리즘에 관심이 많은 사람이 타학교에 비해 적은 편이라 알고리즘에 관한 정보를 얻을 수 있는 방법이 적습니다.

이번 알고리즘 스터디를 통해 올바른 알고리즘 공부 방법과 순서, 더 나아가 코드 리팩토링까지 해드릴 예정입니다.

이번 스터디를 통해서 알고리즘 스킬, 자료구조, 시간복잡도 분석 같은 기본적인 내용에서부터

알고리즘 공부법, 코드 최적화 기술까지 많은 꿀팁들을 얻어가실 수 있습니다.

스크린샷 2022-03-15 오후 12 10 46

1. 코드 최적화를 하지 않아 시간 초과를 받은 A씨
2. 코드 최적화를 배워 시간 초과를 면한 B씨


🧩 스터디 방식


매주 1~2 개의 알고리즘 스킬을 학습하고, 관련된 백준 문제를 제가 올려주면 푸는 방식입니다.

문제를 풀고, 주석을 모두 단 후에 GitHub Discussions에 해당 내용의 풀이를 올려주세요!

ex) Discussions 작성예시

Discussions 작성 후 Pull Request를 보내주시면 됩니다! (Pull Request 방법은 아래에 나옵니다!)


알고리즘 강의 영상은 제가 좋은 자료를 찾아서 링크 올려드리겠습니다.

제가 직접 강의하지 않는 이유는, 강의를 직접할 수도 있지만, 알고리즘에는 한 우물만 파는(고인물) 사람들이 많기때문에

양질의 정보가 넘칩니다. 따라서, 그분들 강의를 보고 배우는게 훨씬 나을 것입니다!

저는 이해가 안되는 부분들을 질문 받고, 백준 문제에서 해결 아이디어나 에러같은 자잘한 질문들을 다 받겠습니다.


이렇게 매주 문제를 풀고, 목요일 오후 7시에 줌미팅을 통해 추가 질문을 받거나 다음 알고리즘 과정을 설명해드리겠습니다.


📁 공부 방법

1️⃣ 제공받은 알고리즘 동영상 강의를 한번 쭉 듣는다.

2️⃣ 다시한번 강의를 듣고 알고리즘을 받아 적는다.

3️⃣ 어떤식으로 알고리즘을 적용하면 좋을지 생각하며 문제를 풀어본다.

4️⃣ 문제를 풀면서 막히는 부분이 있으면 알고리즘 내용에서 막히는지 아이디어가 막히는건지 생각해본다.

5️⃣ 그래도 안풀리면 구글 검색! (문제번호 언어) 아래 그림처럼 검색하면 잘 나옵니다.

처음에는 바로 정답을 보지 않고, 문제 아이디어만 얻어 다시 풀어보는 식으로 하는게 성장에 도움이 됩니다.

스크린샷 2022-03-15 오후 1 24 45


❓ 질문 하는법


1️⃣ https://colorscripter.com/ 해당 URL로 들어가, 코드를 복사해 공유를하고, 백준 문제를 올린다.

2️⃣ 백준 문제를 제출했을때 어떤 오류가 떴는지 상세하게 기술한다. ex) 46%에서 틀렸습니다. 에러(OutOfBounds) 등등..

3️⃣ 어떤 아이디어를 통해 풀었는지 기술한다.

‼️ 코드에 관한 질문을 할때에는 꼭 주석을 달아주세요. (그래야 빠른 답변이 가능합니다!)

맞왜틀(맞았는데 왜 틀리지) 한정, 욕설섞인 질문가능


✅ 주의사항


1️⃣ 최대한 모임에 참석하기

2️⃣ 성실하게 문제 풀기

3️⃣ 이쁜말 사용하기

4️⃣ 모르면 물어보기 (중요!!)

5️⃣ 너무 앞서나가지 마세요. ( 다같이 진도를 맞춥시다! 단, 추가로 문제를 원하시는 경우 문제를 찾아서 제공해드리겠습니다. 😁)


👨‍👨‍👦 멤버








단국대학교
컴퓨터공학과
👦🏻 홍찬희 (스터디장)
단국대학교
소프트웨어학과
👦🏻 탁세하 (스터디원)
단국대학교
모바일시스템공학과
👦🏻 한현민 (스터디원)
단국대학교
소프트웨어학과
👦🏻 장시우 (스터디원)
단국대학교
소프트웨어학과
👦🏻 김예진 (스터디원)
단국대학교
컴퓨터공학과
👦🏻 김규민 (스터디원)

🔗 이용규칙

❗️ 해당 규칙을 지키지 않으면 pull request가 취소 될 수 있다. ❗️


1️⃣ 문제를 푼 코드 첫째줄에는 다음과 같이 주석을 달자.

백준에 정답을 제출해서 맞췄을 때 나오는 결과를 적어주면 됩니다.

  • Example
  // 언어 : C++ , (성공/실패) : 1/0 , 메모리 : 2796 KB , 시간 : 92ms

Screen Shot 2021-08-11 at 1 58 13 PM



  • JAVA
  // 언어 : JAVA , (성공/실패) : 1/4 , 메모리 : 45008 KB , 시간 : 208 ms
  • Python
  # 언어 : Python , (성공/실패) : 1/4 , 메모리 : 45008 KB , 시간 : 208 ms

2️⃣ 폴더와 파일이름 저장 규칙

예를들어) 문제가 1000_A+B라고 하면,

  1. 1000_A+B 폴더에 들어간다.
  2. (이름_사용언어) 폴더를 만든다.
  3. 폴더에 들어가 작성한 파일을 (문제번호_문제이름)으로 만든다. (자바의 경우는 프로젝트 이름을 저렇게 바꿔준다.)

Screen Shot 2021-08-11 at 2 36 35 PM


3️⃣ 코딩 테스트를 목적으로 하는 스터디이기 때문에 의미없는 변수 남발 x

코딩 테스트에 합격하게 되면, 면접 때 그 코드를 리뷰할 수도 있고

또는, 면접관이 직접 채점하는 경우도 있기 때문에 의미없는 변수를 남발하면 안된다.

  • Example) C++
// 문제 : 가격과 물품의 수량을 받아 총 물품의 가격을 출력하는 프로그램을 작성하시오.
// 나쁜 예
#include <iostream>

using namespace std;

int main(void){
  int a,b; // 의미없는 변수
  cin >> a >> b;
  cout << a << b;
}

// 좋은 예
#include <iostream>

using namespace std;

int main(void){
  int price,items; // 변수 이름을 잘 정하자!
  cin >> price >> items;
  cout << price << items;
}
  • 예외 경우 (문제에서 주어진 변수가 다음과 같을 때)

Screen Shot 2021-08-11 at 2 53 56 PM

이럴땐, N,M과 같은 변수를 쓰는게 코드를 보는 입장에서 알아보기 더욱 쉽기 때문에, 그냥 N,M을 변수로 쓴다.



4️⃣ Pull requests 방법 (제출방법)


Pull requests 방법 <= 링크를 타고 들어가면 나옵니다.



🎨 커리큘럼

이름 1주차
(백준 적응하기)
2주차
(정렬)
3주차
(자료구조)
4주차
(에라토스테네스의 체)
5주차
(동적 프로그래밍)
6주차
(투 포인터)
7주차
(이분 탐색)
8주차
(백트래킹)
👤 탁세하
👤 한현민
👤 장시우
👤 김예진
👤 김규민

💬 알고리즘 스터디의 목표


마지막으로, 이번 알고리즘 스터디의 목표는 알고리즘 정복!! 이런게 절대 아닙니다.

먼저 알고리즘을 접해본 스터디장이 스스로 알고리즘을 공부하는 방법과

어떤 방법으로 코드를 작성해야 가독성이 좋아지는지 등 습관들을 잡아주는 스터디라고 생각하시면 될 것 같습니다.

이번 과정이 끝나고 위 알고리즘이 다 이해가지 않으셔도 괜찮습니다! (누구나 다 그래요 ㅋㅋ)

성실하게 하루에 1문제 이상씩만 문제를 푸셔도 금방 머리속에 들어오고 다 외워져요.

알고리즘은 문제를 많이 풀어본 사람이 무조건적으로 유리하기 때문에 이번 스터디를 통해 알고리즘을 푸는 습관을 잘 만들어 가셨으면 좋겠습니다.

이번 스터디가 끝나고 나서도 끝이 아니라 같이 알고리즘을 풀면서 좋은 인연 이어나갔으면 좋겠습니다. 🤗

study's People

Contributors

1006lem avatar deblur99 avatar ghdcksgml1 avatar saesang avatar siwoojang avatar wlsl10 avatar

Watchers

 avatar

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.