본문 바로가기

CS 라이프

우당탕탕 LeetCode 스터디 그룹 결성하기

미국 석사 학기 시작과 동시에 인턴십을 준비해야한다.

진짜?

Graduate Meetup에서 만난 한 친구가 있었다. 날씨도 여름이고 아직 학기도 시작 전이라 친구나 사귈 겸 해서 간 학교 행사였다.

아니 근데 벌써부터 얘가 인턴십을 묻는거다.

 

뭔 벌써 인턴십이냐 했더니 원래 빅테크 기업들은 8월부터 인턴 채용을 한다며 자기는 이미 Axxzxx에 붙었단다.

자랑할 겸 얘기 꺼낸건가 싶기도 했지만 그정도 같으면 나같아도 자랑하고 싶겠다 싶어 그냥 부럽다고 했다.

 

사실 근데 진짜 부럽긴했다.

이제 미국 온 지 일주일 된 애한테 미국에 온 이유를 이미 달성한 애가 옆에 있으니 신기하기도 했다.

 

그래서 지금 내 상황은?

사실 노력을 하고 있지 않은 건 아니다.

8월에 학기 시작해서 9월 중순에 학교에서 개최하는 Job Fest, 우리식의 캠퍼스 리쿠르팅이 있었다. 

하지만 그곳에서 채용이 이뤄진다기 보다는 간보기(?)에 가까웠다. 

 

매일같이 인턴십에 지원해도 비자 스폰십 필요하다 쓰면 걍 입구컷 당하기도 한다. (앞으로는 비자 필요없다 할 예정)

어쩌다가 코딩테스트에 도달하면 내 실력에 자괴감을 느끼며 다음을 기약하기 일쑤였다.

 


그래서 결성했다, LeetCode Study 그룹

어떻게?

우선 마음에 맞는 친구를 찾았다.

그리고 나랑 실력이 비슷한 애 2명을 물색해서 같이 LeetCode 하루에 하나씩 풀자고 제안했다.

우리처럼 정말 코딩에 1도 모르는 애들끼리 스터디 그룹 결성하고 싶다면 이런 방식도 있다는 것을 알려주고자 글을 쓴다.

 


우리만의 LeetCode 방식

Ground Rule 지정하기

[GROUND RULE FOR STUDY GROUP]
1) Everyone should finish 'problem of the day' until 11:59 PM
2) If not, the fine will be charged for $1.
3) Based on source tree, the problem provider check the fine.

우리가 대충 작성한 readme.md 내용이다. 일단 벌금이 걸려야 강제성이 있기 때문에 한 번 부과해봤다.

 

GitHub 브랜치 관리 전략

우리도 그렇게까지 Github 전문가가 아니기 때문에 벌금 체크 용도로만 다음과 같은 브랜치 전략을 택했다.

  • origin/main (default)
    1. src/problems 에 새로운 파일을 생성한다.
    2. 오늘 문제 내는 사람이 파일 생성과 동시에 문제를 제출한다.
    3. 다음 날 어제 생성한 파일에 답을 작성한다.
  • origin/Apple : Apple이라는 친구의 remote
    1.  origin/main 으로부터 Apple(local) 브랜치에 pull 받는다.
    2. src/problems 아래의 문제 파일을 복사해서 src/ 아래에 붙인다.
    3. 붙여넣기 한 문제를 풀고나서 origin/Apple 에 push한다.
  • origin/Banana : Banana라는 친구의 remote, 내용은 위와 같음

 

왜 이런 브랜치 전략을 택했는가?

우선 우리는 origin/main에 모범 답안을 저장해두고 싶었다. 새롭게 파일을 생성하지 않으면 파일에 모범답안이 작성 되었을 때 conflict 나기 때문에 origin/main의 파일은 각자의 local branch에서 건드리지 않기로 했다.

그리고 벌금을 걷어야 했기 때문에 각자 origin/Apple 과 같은 remote 에 push해야 문제를 풀었는지 체크가 가능했다.

 


사실 우리의 브랜치 전략에서도 알 수 있듯이 우리는 완전 생초짜다.

분명 다른 코딩 스터디 그룹에서 택하는 방식이 있을 텐데 그에 대한 지식마저도 없는 애들끼리 모였기 때문에 이렇게 관리한다.

 

언젠가는 이 글을 보면서

???? 뭐 이따구로 브랜치 전략을 택했다고 ????

라고 생각하는 날이 오길 바라며 글을 써보았다...