코딩 테스트
오늘 풀어본 문제는 프로그래머스에 있는 자리수 더하기와, 약수의 합이다. 정리를 해두면 좋을 거 같다.
첫 번째 문제가 "문자열로 들어온 숫자를 각 자리수를 모두 더해서 리턴해라" 라는 문제였다. String 으로 넘어오는 것을 int 로 변환하는건 문제가 되지 않았다. Integer 클래스에서 제공하는 메서드인 parseInt(문자열)을 사용하면 정수로 변환이 가능해진다.
정수로 변환까진 OK 그럼 각 자리수는 어떻게?
생각해본 방법은 for 문을 돌리는 것이다. 각 자리수 별로 하나씩 잘라서 넘어온 값을 누적해서 더해주는 것이다. 가능할 거 같다.
그런데, 여기서 문제가 생겼다. 문자열을 먼저 정수로 변환해주면 내가 생각한 문자열 자르기를 할 수가 없다.
다시 String 클래스에 메서드인 substring()을 이용하여 자르기를 먼저 해주기로 했고, 자르기를 통해 나온 숫자를 정수로 변환하는 방법을 해보기로 했다. 변환된 값은 바로 누적해서 더해주었다.
성공.
글쓴이가 풀은 문제들의 코드를 링크로 걸어두겠습니다! 첫 번째 문제 | 두 번째 문제
Git Push & Pull
원격으로 커밋 밀어올리기
git push
원격의 커밋 당겨오기
git pull
Pull 받아와야 할 것이 있을 때 push를 하면?
- 불가능하다. 원격에 먼저 적용된 새 버전이 있으므로 pull해서 원격의 버전을 받아온 다음에 push가 가능하다.
push할 것은 있고, pull 할 때 두 가지 방법이 있다.
git pull --no-rebase
- 이 방법은 merge 방식이다.
git pull --rebase
- 이름에서 볼 수 있듯이 rebase 방식이다. (pull 상의 rebase는 다르다 협업 시에 사용한다)
pull 을 받아왔다면 푸쉬!
git push
원격의 브랜치 다루어보기
우선 로컬에서 브랜치를 만들어 원격에 push 를 해보겠습니다.
git branch from-local
git push -u origin from-local
브랜치 목록 살펴보는 것
git branch --all
원격의 브랜치 로컬에 받아 오는 것은 fetch를 한번 해줘야 합니다.
git fetch
로컬에 같은 이름의 브랜치를 생성하여 연결하고 switch
git switch -t origin/from-remote
원격에 있는 브랜치 삭제할 수도 있습니다.
git push 원격 이름 --delete 원격의 브랜치명
Git의 3가지 공간
우선 깃은 특징이 스냅샷을 사용하는 것이다. (Snapshot)
스냅샷 방식이 이전 버전 관리 시스템의 델타 방식보다 갖는 주요 이점은
" 대규모 저장소에서 이력 접근 속도가 빠르고, 각 버전의 파일 상태 전체를 저장하므로, 변경 사항이 누적되는 델타 방식에 비해 대규모 저장소에서 특정 버전의 파일 내용을 빠르게 불러올 수 있다. "

Working directory
- untracked : Add 된 적 없는 파일, ignore 된 파일
- tracked : Add 된 적 있고 변경내역이 있는 파일
- git add 명령어로 Staging area로 이동
Staging area
- 커밋을 위한 준비 단계
- git commit 명령어로 repository 로 이동
Repository
- .git directory 라고도 불림
- 커밋된 상태
git rm
- 파일을 그냥 삭제할 시 파일의 삭제가 working directory 에 있음.
git rm 파일명
- 파일의 삭제가 Staging area 에 있음.
git mv
- 파일명을 그냥 수정할 시 working directory 에 있음.
git mv 기존파일명 수정파일명
- git이 수정된 파일명 추적을 할 수 있게 되고 staging area에 있음.
파일을 staging area 에서 working directory로 이동하기
git restore --staged 파일명
- --staged를 빼면 working directory에서도 제거가 된다.
- 예전에는 git reset head 파일명 으로 사용했다고 한다.
reset의 3가지 옵션
-- soft : repository 에서 staging area 로 이동
-- mixed (default) : repository 에서 working directory로 이동
-- hard : 수정사항 완전히 삭제
HEAD
Git의 HEAD
현재 속한 브랜치의 가장 최신 커밋!
checkout으로 앞뒤 이동해볼수 있다.
git checkout HEAD^
- ^ 또는 ~ : 갯수만큼 이전으로 이동한다.
- 커밋 해시를 사용해서도 이동할 수 있다.
git checkout 커밋해시
이전으로 이동을 했다면 이동을 한 단계 되돌리기도 있다.
git checkout -
HEAD를 사용하여 reset 도 가능함.
git reset HEAD 원하는 단계 옵션
fetch 와 pull
fetch : 원격 저장소의 최신 커밋을 로컬로 가져오기만 함
pull : 원격 저장소의 최신 커밋을 로컬로 가져와 merge 또는 rebase로 가져온다.
프로답게 커밋 관리하기
하나의 커밋에는 한 단위의 작업을 넣도록한다.
- 한 작업을 여러 버전에 걸쳐 커밋하지 않는다.
- 여러 작업을 한 버전에 커밋하지 않는다.
커밋 메시지는 어떤 작업이 이뤄졌는지 알아볼 수 있도록 작성한다.
커밋 메시지 컨벤션
type : subject
body (optional)
...
...
...
footer (optional)
예시
feat : 압축파일 미리보기 기능 추가
사용자의 편의를 위해 압출을 풀기 전에
다음과 같이 압축파일 미리보기를 할 수 있도록 함
- 마우스 오른쪽 클릭
- 윈도우 탐색기 또는 맥 파인더의 미리보기 창
Closes #125
Type
| 타입 | 설명 |
| feat | 새로운 기능 추가 |
| fix | 버그 수정 |
| docs | 문서 수정 |
| style | 공백, 세미콜론 등 스타일 수정 |
| refactor | 코드 리팩토링 |
| pert | 성능 개선 |
| test | 테스트 추가 |
| chore | 빌드 과정 또는 보조 기능(문서 생성기능 등)수정 |
Subject
커밋의 작업 내용 간략이 설명
Body
길게 설명할 필요가 있을 시 작성
Footer
- Breaking Point 가 있을 때
- 특정 이슈에 대한 해결 작업일 때
보다 세심하게 스테이징하고 커밋하기
hunk별 스테이징 진행
git add -p
- 옵션 설명을 보려면 ? 입력 후 엔터
- y 또는 n로 각 헝크 선택
변경사항을 확인하고 커밋하기
git commit -v
- git diff --staged 도 이번 커밋에서 변경되는 것들을 확인할 수 있고, 위 명령어는 커밋과 변경사항을 한번에 확인 및 작업을 할 수 있다.
커밋하기 애매한 변화 stash하기 (치워두기)
git stash
- 해당 명령어로 치워둘 수 있다. git shash save 와 같음.
원하는 시점, 브랜치에서 다시 적용하기
git stash pop
원하는 것만 stash 해보기
git stash -p
메시지와 함께 스태시
git stash -m "메시지"
스태시 목록 보기
git stash list
- 리스트상의 번호로 apply, drop, pop 가능하다.
커밋 수정하기
커밋 메시지 변경
git commit --amend
커밋 메시지 한 줄로 변경
git commit --amend -m "메시지"
대상 바로 이전 커밋을 다양한 방법으로 수정가능하다.
git rebase -i
p, r, e, d, s
p : pick 커밋 그대로 두기
r : reword 커밋 메시지 변경
e : edit 수정을 위해 정지
d : drop 커밋 삭제
s : squash 이전 커밋에 합치기
관리되지 않는 파일들 삭제하기
git clean -옵션
-n : 삭제될 파일들 보여주기
-i : 인터렉티브 모드 시작
-d : 폴더 포함
-f : 강제로 바로 지워버리기
-x : .gitignore에 등록된 파일들도 삭제 (이건 위험하다)
커밋하지 않은 변경사항 되돌리기
git restore 파일명
- 특정 파일을 지정된 상태로 복구하기
- 워킹 디렉토리의 특정 파일 복구
- 파일명 자리에 . : 모든 파일 복구
변경상태를 스테이지에서 워킹 디렉토리로 돌려놓는 방법도 있다.
git restore --staged 파일명
파일을 특정 커밋의 상태로 되돌리는 방법도 가능하다
git restore --source=해시 파일명
reset 을 했어도 희망이 존재한다 !!!
git reflog
- reflog는 프로젝트가 위치한 커밋이 바뀔 때마다 기록되는 내역을 보여주고, 이를 사용하여 reset 하기 이전 시점으로 프로젝트를 복구할 수 있다.
'TIL & STUDY' 카테고리의 다른 글
| Daily Study : 14 (0) | 2025.10.01 |
|---|---|
| Daily Study : 13 (0) | 2025.09.30 |
| Daily Study : 11 (0) | 2025.09.27 |
| Daily Study : 10 (0) | 2025.09.26 |
| Daily Study : 9 (1) | 2025.09.25 |