코딩테스트 스터디를 시작했는데, 혼자 해보려 할 때보다 더 동기부여가 되고 좋은 것 같다.
역시 의지가 약해질 땐 팀플이 최고의 처방✨
함께 스터디 할 팀원의 제안으로 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
✅ 스터디 시작 - !
얼른 높은 레벨의 문제도 풀 수 있도록 열심히 해봐야겠다 💪
'Algorithm' 카테고리의 다른 글
[Java]코딩 테스트에서 자주 쓰이는 String Class Method 모음 (0) | 2025.04.08 |
---|---|
[Java] 백준 10430번: 나머지 (0) | 2023.11.16 |
[Java] 백준 18108번: 1998년생인 내가 태국에서는 2541년생?! (0) | 2023.11.16 |
[Java] 백준 10926번: ??! (1) | 2023.11.12 |
[Java] 백준 10869번: 사칙연산 (0) | 2023.11.12 |