본문 바로가기
Algorithm

Git을 활용한 코딩테스트 협업 방법 (스터디용 폴더 구조, 협업 방식-PR 리뷰, 기타 팁)

by sukii 2025. 3. 24.
반응형

코딩테스트 스터디를 시작했는데, 혼자 해보려 할 때보다 더 동기부여가 되고 좋은 것 같다.

역시 의지가 약해질 땐 팀플이 최고의 처방✨

함께 스터디 할 팀원의 제안으로 Git을 활용하여 작성한 코드를 관리하고 서로 피드백 주고받기로 했다.


📚 저장소 설계 & 폴더 구조

서로의 코드가 섞이지 않도록 개인별 폴더를 만들고, 그 안에 사이트 및 난이도별로 나누어 관리했다.

commit-to-solve
├── 내 이름
│   ├── programmers
│   │   ├── level-0
│   │   ├── level-1
│   │   └── level-2
│   ├── baekjoon
│   │   ├── bronze
│   │   ├── silver
│   │   └── gold
│   └── leetcode
│       ├── easy
│       ├── medium
│       └── hard
├── 스터디 파트너 이름
│   └── (동일 구조)
└── README.md
  • 이름으로 최상위 폴더를 나누고
  • 그 안에 programmers, baekjoon, leetcode 등 플랫폼별 분류
  • 그 하위는 난이도별로 구분
  • 공동 학습 내용은 README.md에 기록 할 예정

📄 커밋 메시지 규칙

보통 Git으로 협업할 땐, 작업 내용을 명확히 알 수 있도록 커밋 메시지에 Prefix를 붙이면 좋다. 

우리는 아마 이미 프로그래머스에서 다 실행시켜보고 푼 문제들을 커밋 할 예정이라, Add를 주로 쓰고 Docs 정도를 가끔씩 쓰지 않을까 싶다.

Add: 새로운 문제 풀이 파일 추가
Fix: 코드 수정 또는 버그 수정
Update: 기존 코드 개선, 리팩토링
Docs: README 등 문서 수정
Chore: 설정, 경목, 속성 설정 등 자본적인 파일

커밋 메시지 예시: Add: 프로그래머스 Lv1 - 문자열을 정수로 바꾸기 문제 풀이

 


👥 협업 방식 (PR을 통한 리뷰?)

Lv 0~2 : 커밋 페이지에서 코멘트를 남겨 리뷰(필요 시)
Lv 3 이상 :  PR(Pull Request)을 통해 서로 코드 리뷰 강제성 부여

 

처음에는 브랜치를 나누고 PR(Pull Request)을 통해 리뷰하고 머지하는 방식을 고려했지만, 초반에 Lv0 ~ 2 풀 때는 리뷰를 모든 문제마다 할 필요까지 없다고 생각하여 일단은 PR 없이 바로 커밋/푸시하는 방식으로 진행하기로 했다.

하지만 PR 없이도 아래 이미지와 같이 GitHub의 커밋 페이지에서 줄 단위 코멘트 또는 커밋 전체에 대한 코멘트를 남겨 리뷰할 수 있다.

 

커밋 페이지의 코멘트 기능

 

 


 

🔍 코드 파일 작성 팁

  • 상단 주석 : 문제 사이트, 제목, 링크, 내용 작성
  • 중간 : 처음 풀었을 때 구현한 코드 작성
  • 하단 주석 : 잘한 점, 아쉬운 점, 복습 포인트 작성=> 하단 주석은 셀프 점검으로 문제를 풀고 나서 다른 사람들의 코드를 보며 어떤 점이 잘했고 아쉬웠는지 작성해보고, 잘 구현된 코드를 보며 다시 한번 작성해보고 복습 포인트를 적는다. 
/**
💡프로그래머스 - 문자열을 정수로 바꾸기
https://school.programmers.co.kr/learn/courses/30/lessons/12925

✅문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

✅제한 조건
s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.

✅입출력 예
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
*/

class Solution {
    public int solution(String s) {
        int answer = Integer.parseInt(s);
        return answer;
    }
}

/**
✅잘한 점
 - 불필요한 로직 없이 parseInt()로 간결하게 처리함

❗아쉬운 점
 - parseInt() 없이 부호를 직접 처리하는 방식도 연습해보면 좋았을 것 같음

🔁복습 포인트
 - parseInt 없이 구현해보기
	
	class Solution {
		public int solution(String s) {
			//+: true, -:false
			boolean sign = true;
			int answer = 0;
			
			for(int i=0; i<s.length(); i++) {
				char ch = s.charAt(i);
				if(ch == '-') {
					sign = false;
				} else if(ch != '+') {
					answer = answer*10 + (ch - '0');
				}
			}
			return (sign ? 1 : -1) * answer;
		}
	}
*/

 

 


 

🔧 IDE 없이 코드 파일 Git에 업로드 하기

1. GitHub 저장소 클론하기

# 원하는 위치로 이동 (기본이 홈디렉토리이고, 홈디렉토리에 클론함)
cd ~  

#클론
git clone https://github.com/your-id/commit-to-solve.git

#클론한 저장소로 이동
cd commit-to-solve

 

2. 폴더 구조 만들기

mkdir -p sumin/programmers/level-1

-p : 부모 디렉토리가 없어도 자동으로 같이 만들어주는 옵션으로, 위 폴더들이 한 번에 모두 생성됨

 

3. 자바 파일 생성 및 작성

  => 작성한 파일이 있다면 위 폴더에 이동시켜주면 된다.

 

4. Git에 추가하고 커밋하기

git add sumin/programmers/level-1/SumOfDigits.java
git commit -m "Add: 프로그래머스 Lv1 문자열을 정수로 바꾸기"

 

5. GitHub에 푸시

git push origin main

 

 


✅ 스터디 시작 - ! 

얼른 높은 레벨의 문제도 풀 수 있도록 열심히 해봐야겠다 💪 

 

반응형