[자료구조] DS_2024 소개

안우진·2024년 4월 9일

자료구조

목록 보기
7/12

그게 뭔데

github.com/awj1052/DS_2024 는 자료구조를 복습, 응용 및 확장하며 Java의 객체지향에 대해 고민해보고 남의 코드를 읽는 연습을 위해 만든 프로젝트입니다.

이 프로젝트로 자료구조, Java, JUnit, Github에 대해 익숙해지기를 기대하고 있습니다.

어떻게 하는건데

  1. Github에서 fork(Copy the main branch only 해제)를 한다.
  2. 적당한 Project Folder에 git clone을 한다.
  3. IntelliJ Java21 기준으로 TODO를 구현하고 Test를 한다.
  4. add, commit, push
  5. branch에 맞게 간단한 메소드 설명과 함께 PR을 날린다.
  6. 다른 branch 과제도 고고씽

1. fork?

Copy the main branch only 체크 해제Create fork 하면 자신의 Github Repository에 DS_2024가 생길겁니다.

2. clone?

IntelliJ 기본 프로젝트 폴더는 C:\Users\이름\IdeaProjects 이여서
cmd 창 키고 바로 cd IdeaProjects 하면 이동 가능!

위에 사진처럼 자신의 Github Repository DS_2024에서 클릭클릭 해주고
cmd 창에서 git clone Ctrl+V 해서 clone 하고
이후 IntelliJ 우측 상단에 File -> Open 에서 DS_2024 열어주면 끝!

3. TODO?

만약에 IntelliJ로 열었는데 빨간 줄이 엄청나게 많다? -> 자바 버전이 이상하다.
Java 21을 권장하기 때문에 검색을 하든 좌측 상단 Settings나 Project Structure 에서 sdk 버전을 바꾸던가 21을 설치하거나..

쨋든, main branch에서 TODO를 진행하면 됩니다.
모든 파일을 스캔해서 TODO를 찾거나..
좌측 상단에 View -> Tool Windows -> TODO 를 누르면 잘 보입니다.

이런 느낌으로 볼 수 있어용
그래서 위에 써있는 설명이랑 TODO 설명을 보고 코드 작성을 하면 됩니다.

3. Test?

내가 TODO를 잘 구현을 했는지 못했는지를 어떻게 아냐?
MainJava를 실행시켜 위에 써있는 예제 입력과 예제 출력을 비교해봐도 좋고
src/test/ 경로에 있는 Test 파일을 실행시키면 더 좋습니다.
블라블라Test.java 파일은 JUnit으로 작성한 코드로 대충 단위테스트를 진행하려고 구성한 코드들입니다. 나중에 Spring 할 때 보게 됩니다.
그냥 그렇구나~ 하고 넘어가고

클릭 2번에 결과를 확인할 수 있습니다.

(대충 엄청 틀린 사진)

4. add, commit, push?

구현과 테스트를 전부 했으니 이제 내 GitHub Repository에 올려봅시다.
차례대로 3줄을 치면 됩니다 일단은?
git add .
git commit -m "커밋메세지에용"
git push origin main
만약 다른 branch 과제를 했다! 하면
git push origin CDList 처럼 branch 이름을 써주면 됩니다.
commit message 관해서 convention 키워드로 검색해보면 도움될겁니다.

IntelliJ에서 Terminal을 지원하기에 귀찮게 cmd 켜서 cd로 이동 안해도 돼용

5. PR?

PR 은 Pull Request의 준말로 검색해보니
코드를 수정했는데 당신도 코드를 수정했다면 제 수정한 내용도 적용시켜 주세요~
라고 합니다만 이거는 제가 일방적으로 내는 과제(?)이기 때문에 리뷰 코멘트 간단하게 달아드릴겁니다.

그래서 PR을 어떻게 하는거냐?

자신 Github Repository DS_2024 에서 좌측 상단 Pull requests를 누르고
오른쪽 초록색 New pull request를 누르면..

위 사진처럼 뜨는데 빨간색 네모칸 확인 한 번 해주고 Create pull request 클릭
(이미지 확보를 위해 자기자신 레포에 PR하는거라 조금 다릅니다.)
어떤 과제 제출인지 제가 한눈에 보기 위해서 branch 통일해서 PR 해주세요. 위 이미지는 서로 다른 branch에용

Create pull request 누르면 이제 title, description 쓸 수 있는 페이지로 이동되는데 작성하고 다시 Create pull request 누르면 됩니다.
title, description이나 commit message 등 convention 키워드로 검색하면 좋은 자료 많으니 참고하면 무조건 도움됩니다.

description 에 제가 알아볼 수 있게 작성한 메소드마다 적어도 한 줄은 작성해주세용

이럼 과제 하나 끝!

6. branch?

이제 다른 과제를 하려면 branch를 왔다리갔다리 해야합니다.

Terminal에서 대충 git checkout 브랜치이름 하면 왔다갔다 가능!!

만약 다른 브랜치로 과제를 올라왔다 하면 그걸 받아와야하는데.. 우선 remote로 upstream을 등록해봅시다
git remote add upstream https://github.com/awj1052/DS_2024.git
하면 등록이 되고
git remote -v
치면 리스트를 쭉 보여줍니다. 아마 origin하고 upstream 있을겁니다.
git pull upstream 새브랜치이름
git checkout 새브랜치이름
이런식으로 이동이 됩니당

7. branch 설명

현재 완성된 branch는 다음과 같습니다. 순서대로 하는걸 추천하기는 합니다.

main

  • Stack 후위표기식 계산 구현 (백준 실버3)

ArrayList

  • resize 구현하기 (쉬움)

CDList

  • Circular Doubly LinkedList 를 마음대로 확장해버려서 index번째에 끼워넣고 삭제하기

ArrayQueue

  • 배열, front, rear를 사용해서 element(), add(), resize(), remove() 구현하기 (귀찮음)
  • 요세푸스 문제 (백준 실버4)

Tree

  • BinaryTree의 size(), height(), isEqual() 완성하기
  • BinaryTreeTravel의 inOrder(), postOrder() 구현하기
  • 최소 공통 조상 (Lowest Common Ancestor, LCA) 구현하기 (어려움)

BST

  • Binary Search Tree 변형하기
  • copy() 구현하기

PriorityQueue

  • 쉬움

0개의 댓글