-
๋ฆฌ๋์ค ํ ๋ฅด๋ฐ์ค๊ฐ ๊ฐ๋ฐํ ๋ถ์ฐํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (VCS)
-
๋งค์ฐ ๋น ๋ฅธ ์๋์ ๋ถ์ฐํ ์ ์ฅ์ ์ง์
-
Git์ ์์ ํด๋๋ ์ ์ฒด ๊ธฐ๋ก๊ณผ ๊ฐ ๊ธฐ๋ก์ ์ถ์ ํ ์ ์๋ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์
-
์์ ์ด ๋๋๋ฉด Git ์๊ฒฉ ์ ์ฅ์๋ก ๋ค์ ๋ฐํ(commit, push)
- ๋ฉ์ธ ์ ์ฅ์์ ํฉ์น๊ธฐ(merge) ์ ๋ฉ์ธ ์ ์ฅ์์ ๊ฒฉ๋ฆฌ์ํค๊ณ ๋ฐ๋ก ๊ฐ๋ฐ ํ ์ ์๋ ๊ฐ์ง(branch)๋ฅผ ๋ง๋ค ์ ์๋ค.
- ๊ฐ์ง์ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด ๋ฉ์ธ ์ ์ฅ์์ ํฉ์น๊ณ ๊ฐ์ง๋ ์ญ์ ์ํค๋ ๊ฐ์ง์น๊ธฐ๋ฅผ ํ ์ ์๋ค.
Git ๋ช ๋ น์ด(์ฐธ์กฐ)
# ์ฌ์ฉ์ ์ค์
git config --global user.name โYour nameโ
git config --global user.email โYour email addressโ
# git ๋๋ ํ ๋ฆฌ ์ค์
mkdir "/๊ฒฝ๋ก/"newDir
cd "/๊ฒฝ๋ก/"newDir
git init # ๋๋ ๋ฐ๋ก ํด๋ก
# ์๊ฒฉ ์ ์ฅ์์์ ์ ์ฅ์ ๋ณต์
git clone <์ ์ฅ์ url>
# ๋ณ๊ฒฝํ ํ์ผ commit stage์ ์ถ๊ฐ
git add <ํ์ผ>
# ๋ณ๊ฒฝ ๋ด์ฉ ์ปค๋ฐ
git commit -m โ<๋ฉ์์ง>โ
# ๋ณ๊ฒฝ ๋ด์ฉ ํธ์ฌ
git push
-
์ ์ญ ์ฌ์ฉ์๋ช /์ด๋ฉ์ผ ๊ตฌ์ฑํ๊ธฐ
git config --global user.name โYour nameโ git config --global user.email โYour email addressโ
-
์ ์ฅ์๋ณ ์ฌ์ฉ์๋ช /์ด๋ฉ์ผ ๊ตฌ์ฑํ๊ธฐ (ํด๋น ์ ์ฅ์ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํ)
git config user.name โYour nameโ git config user.email โYour email addressโ # user ์ค์ ์ด ๋์ด ์์ง ์์ผ๋ฉด github์ commit ์ง๊ณ๊ฐ ๋์ง ์์
-
์ ์ญ ์ค์ ์ ๋ณด ์กฐํ
git config --global --list
-
์ ์ฅ์๋ณ ์ค์ ์ ๋ณด ์กฐํ
git config --list
-
Git์ ์ถ๋ ฅ๊ฒฐ๊ณผ ์์ ํ์ฑํํ๊ธฐ
git config --global color.ui โautoโ
-
์๋ก์ด ์ ์ฅ์ ์ด๊ธฐํํ๊ธฐ
mkdir "/๊ฒฝ๋ก/"newDir cd "/๊ฒฝ๋ก/"newDir git init
-
์ ์ฅ์ ๋ณต์ ํ๊ธฐ
git clone <์ ์ฅ์ url>
-
์๋ก์ด ์๊ฒฉ ์ ์ฅ์ ์ถ๊ฐํ๊ธฐ
git remote add <์๊ฒฉ ์ ์ฅ์> <์ ์ฅ์ url>
-
์๋ก์ด ํ์ผ์ ์ถ๊ฐํ๊ฑฐ๋ ์กด์ฌํ๋ ํ์ผ ์คํ ์ด์งํ๊ณ ์ปค๋ฐํ๊ธฐ
git add <ํ์ผ> git commit -m โ<๋ฉ์์ง>โ
-
ํ์ผ์ ์ผ๋ถ๋ฅผ ์คํ ์ด์งํ๊ธฐ
git add -p [<ํ์ผ> [<ํ์ผ> [๊ธฐํ ํ์ผ๋คโฆ]]] add ๋ช ๋ น์์ Git ๋ํ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ์ถ๊ฐํ๊ธฐ git add -i
-
์์ ๋๊ณ ์ถ์ ๋๋ ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ ์คํ ์ด์งํ๊ธฐ
git add -u [<๊ฒฝ๋ก> [<๊ฒฝ๋ก>]]
-
์์ ๋๊ณ ์ถ์ ๋๋ ๋ชจ๋ ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ ์ปค๋ฐํ๊ธฐ
git commit -m โ<๋ฉ์์ง>โ -a
-
์์ ํธ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ ๋๋ ค๋๊ธฐ
git checkout HEAD <ํ์ผ> [<ํ์ผ>]
-
์ปค๋ฐ๋์ง ์๊ณ ์คํ ์ด์ง๋ ๋ณ๊ฒฝ ์ฌํญ ์ฌ์ค์ ํ๊ธฐ
git reset HEAD <ํ์ผ> [<ํ์ผ>]
-
๋ง์ง๋ง ์ปค๋ฐ ๊ณ ์น๊ธฐ
git commit -m โ<๋ฉ์์ง>โ - -amend
-
์ด์ ์ปค๋ฐ์ ์์ ํ๊ณ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ
git commit -C HEAD - -amend
-
์ง์ญ ๋ธ๋์น ๋ชฉ๋ก ๋ณด๊ธฐ
git branch
-
์๊ฒฉ ๋ธ๋์น ๋ชฉ๋ก ๋ณด๊ธฐ
git branch -r
-
์ง์ญ๊ณผ ์๊ฒฉ์ ํฌํจํ ๋ชจ๋ ๋ธ๋์น ๋ชฉ๋ก ๋ณด๊ธฐ
git branch -a
-
ํ์ฌ ๋ธ๋์น์์ ์๋ก์ด ๋ธ๋์น ์์ฑํ๊ธฐ
git branch <์๋ก์ด ๋ธ๋์น>
-
๋ค๋ฅธ ๋ธ๋์น ์ฒดํฌ์์ํ๊ธฐ
git checkout <๋ธ๋์น>
-
ํ์ฌ ๋ธ๋์น์์ ์๋ก์ด ๋ธ๋์น ์์ฑํ๊ณ ์ฒดํฌ์์ํ๊ธฐ
git checkout -b <์๋ก์ด ๋ธ๋์น>
-
๋ค๋ฅธ ์์ ์ง์ ์์ ๋ธ๋์น ์์ฑํ๊ธฐ
git branch <์๋ก์ด ๋ธ๋์น> <๋ธ๋์น๋ฅผ ์์ฑํ ์์น>
-
๊ธฐ์กด์ ๋ธ๋์น๋ฅผ ์๋ก์ด ๋ธ๋์น๋ก ๋ฎ์ด์ฐ๊ธฐ
git branch -f <๊ธฐ์กด ๋ธ๋์น> [<๋ธ๋์น๋ฅผ ์์ฑํ ์์น>]
-
๋ธ๋์น๋ฅผ ์ฎ๊ธฐ๊ฑฐ๋ ๋ธ๋์น๋ช ๋ณ๊ฒฝํ๊ธฐ
# <์๋ก์ด ๋ธ๋์น>๊ฐ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ git checkout -m <๊ธฐ์กด ๋ธ๋์น> <์๋ก์ด ๋ธ๋์น> # ๋ฌด์กฐ๊ฑด ๋ฎ์ด์ฐ๊ธฐ git checkout -M <๊ธฐ์กด ๋ธ๋์น> <์๋ก์ด ๋ธ๋์น>
-
๋ค๋ฅธ ๋ธ๋์น๋ฅผ ํ์ฌ ๋ธ๋์น๋ก ํฉ์น๊ธฐ
git merge <๋ธ๋์น>
-
์ปค๋ฐํ์ง ์๊ณ ํฉ์น๊ธฐ
git merge - -no-commit <๋ธ๋์น>
-
์ ํํ์ฌ ํฉ์น๊ธฐ
git cherry-pick <์ปค๋ฐ๋ช >
-
์ปค๋ฐํ์ง ์๊ณ ์ ํํ์ฌ ํฉ์น๊ธฐ
git cherry-pick -n <์ปค๋ฐ๋ช >
-
๋ธ๋์น์ ์ด๋ ฅ์ ๋ค๋ฅธ ๋ธ๋์น์ ํฉ์น๊ธฐ
git merge - -squash <๋ธ๋์น>
-
๋ธ๋์น ์ญ์ ํ๊ธฐ
# ์ญ์ ํ ๋ธ๋์น๊ฐ ํ์ฌ ๋ธ๋์น์ ํฉ์ณ์ก์ ๊ฒฝ์ฐ์๋ง git branch -d <์ญ์ ํ ๋ธ๋์น> # ์ญ์ ํ ๋ธ๋์น๊ฐ ํ์ฌ ๋ธ๋์น์ ํฉ์ณ์ง์ง ์์์ด๋ git branch -D <์ญ์ ํ ๋ธ๋์น>
-
๋ชจ๋ ์ด๋ ฅ ๋ณด๊ธฐ
git log
-
๋ณ๊ฒฝ ์ฌํญ์ ๋ณด์ฌ์ฃผ๋ ํจ์น์ ํจ๊ป ๋ก๊ทธ ํ์ํ๊ธฐ
git log -p
-
1๊ฐ์ ํญ๋ชฉ๋ง ๋ณด์ด๋๋ก ๋ก๊ทธ ๊ฐ์ ์ ํํ๊ธฐ
git log -1
-
20๊ฐ์ ํญ๋ชฉ๊ณผ ํจ์น๋ง ๋ณด์ด๋๋ก ๋ก๊ทธ ์ ํํ๊ธฐ
git log -20 -p
-
6๊ฐ์ ๋์์ ์ปค๋ฐ ๋ก๊ทธ ๋ณด๊ธฐ
git log - -since=โ6 hoursโ
-
์ดํ ์ ๊น์ง์ ์ปค๋ฐ ๋ก๊ทธ ๋ณด๊ธฐ
git log - -before=โ2 daysโ
-
HEAD๋ณด๋ค ์ธ ๊ฐ ์ด์ ์ ์ปค๋ฐ ๋ก๊ทธ ๋ณด๊ธฐ
git log -1 HEAD-3 git log -1 HEAD^^^ git log -1 HEAD~1^^
-
๋ ์ง์ ์ฌ์ด์ ์ปค๋ฐ ๋ก๊ทธ ๋ณด๊ธฐ
git log <์์ ์ง์ >โฆ<๋ ์ง์ > # ์์ ์ง์ ์ด๋ ๋ ์ง์ ์ ์ปค๋ฐ๋ช , ๋ธ๋์น๋ช , ํน์ ํ๊ทธ๋ช ์ด ๋ ์ ์๊ณ ์กฐํฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
-
๊ฐ ํญ๋ชฉ์ ๋ก๊ทธ ์ด๋ ฅ ํ ์ค์ฉ ๋ณด๊ธฐ
git log - -pretty=oneline
-
๊ฐ ํญ๋ชฉ๋ง๋ค ์ํฅ ๋ฐ์ ์ค์ ํต๊ณ ๋ณด๊ธฐ
git log - -stat
-
์ปค๋ฐํ ์์ ์ ํ์ผ ์ํ ๋ณด๊ธฐ
git log - -name-status
-
ํ์ฌ ์์ ํธ๋ฆฌ์ ์ธ๋ฑ์ค์ ์ฐจ์ด์ ๋ณด๊ธฐ
git diff
-
์ธ๋ฑ์ค์ ์ ์ฅ์์ ์ฐจ์ด์ ๋ณด๊ธฐ
git diff - -cached
-
์์ ํธ๋ฆฌ์ ์ ์ฅ์์ ์ฐจ์ด์ ๋ณด๊ธฐ
git diff HEAD
-
์์ ํธ๋ฆฌ์ ํน์ ์์น ๊ฐ์ ์ฐจ์ด์ ๋ณด๊ธฐ
git diff <์์ ์ง์ > # ์์ ์ง์ ์ ์ปค๋ฐ๋ช or ๋ธ๋์น๋ช or ํ๊ทธ๋ช
-
์ ์ฅ์์ ๋ ์ง์ ์ฌ์ด์ ์ฐจ์ด์ ๋ณด๊ธฐ
git diff <์์ ์ง์ > <๋ ์ง์ >
-
์ฐจ์ด์ ์ ํต๊ณ ๋ณด๊ธฐ
git diff - -stat <์์ ์ง์ > [<๋ ์ง์ >]
-
ํ์ผ์ ์ปค๋ฐ ์ ๋ณด ์ค ๋จ์๋ก ๋ณด๊ธฐ
git blame <ํ์ผ>
-
ํ์ผ์ ์ค ๋จ์์ ๋ณต์ฌ, ๋ถ์ฌ ๋ฃ๊ธฐ, ์ด๋ ์ ๋ณด ๋ณด๊ธฐ
git blame -M <ํ์ผ>
-
ํ์ผ์ ์ค ๋จ์์ ์ด๋๊ณผ ์๋ณธ ํ์ผ ์ ๋ณด ๋ณด๊ธฐ
git blame -C -C <ํ์ผ>
-
๋ก๊ทธ์์ ๋ณต์ฌ์ ๋ถ์ฌ ๋ฃ์ ์ ๋ณด ๋ณด๊ธฐ
git log -C -C -p -1 <ํน์ ์ง์ >
-
์ ์ฅ์ ๋ณต์ ํ๊ธฐ
git clone <์ ์ฅ์>
-
๋ง์ง๋ง 200๊ฐ์ ์ปค๋ฐ๋ง ํฌํจํ์ฌ ์ ์ฅ์ ๋ณต์ ํ๊ธฐ
git clone - -depth 200 <์ ์ฅ์>
-
์๋ก์ด ์๊ฒฉ ์ ์ฅ์ ์ถ๊ฐํ๊ธฐ
git remote add <์๊ฒฉ ์ ์ฅ์> <์ ์ฅ์ url>
-
๋ชจ๋ ์๊ฒฉ ๋ธ๋์น ๋ชฉ๋ก ๋ณด๊ธฐ
git branch -r
-
์๊ฒฉ ๋ธ๋์น์์ ์ง์ญ ๋ธ๋์น ์์ฑํ๊ธฐ
git branch <์๋ก์ด ๋ธ๋์น> <์๊ฒฉ ๋ธ๋์น>
-
์๊ฒฉ ํ๊ทธ์์ ์ง์ญ ๋ธ๋์น ์์ฑํ๊ธฐ
git branch <์๋ก์ด ๋ธ๋์น> <์๊ฒฉ ํ๊ทธ>
-
origin ์ ์ฅ์์์ ํฉ์น์ง ์๊ณ ์ง์ญ ๋ธ๋์น๋ก ๋ณ๊ฒฝ ์ฌํญ ๊ฐ์ ธ์ค๊ธฐ
git fetch
-
์๊ฒฉ ์ ์ฅ์์์ ํฉ์น์ง ์๊ณ ์ง์ญ ๋ธ๋์น๋ก ๋ณ๊ฒฝ ์ฌํญ ๊ฐ์ ธ์ค๊ธฐ
git fetch <์๊ฒฉ ์ ์ฅ์>
-
์๊ฒฉ ์ ์ฅ์์์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ ธ์ ํ์ฌ ๋ธ๋์น์ ํฉ์น๊ธฐ
git pull <์๊ฒฉ ์ ์ฅ์>
-
origin ์ ์ฅ์์์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ ธ์ ํ์ฌ ๋ธ๋์น์ ํฉ์น๊ธฐ
git pull
-
์ง์ญ ๋ธ๋์น๋ฅผ ์๊ฒฉ ๋ธ๋์น์ ํธ์ฑํ๊ธฐ
git push <์๊ฒฉ ์ ์ฅ์> <์ง์ญ ๋ธ๋์น>:<์๊ฒฉ ๋ธ๋์น>
-
์ง์ญ ๋ธ๋์น๋ฅผ ๋์ผํ ์ด๋ฆ์ ์๊ฒฉ ๋ธ๋์น์ ํธ์ฑํ๊ธฐ
git push <์๊ฒฉ ์ ์ฅ์> <์ง์ญ ๋ธ๋์น>
-
์๋ก์ด ๋ก์ปฌ ๋ธ๋์น๋ฅผ ์๊ฒฉ ์ ์ฅ์์ ํธ์ฑํ๊ธฐ
git push <์๊ฒฉ ์ ์ฅ์> <์ง์ญ ๋ธ๋์น>
-
์๊ฒฉ ์ ์ฅ์์์ ์ธ๋ชจ๊ฐ ์์ด์ง ์๊ฒฉ ๋ธ๋์น ์ ๊ฑฐํ๊ธฐ
git remote prune <์๊ฒฉ ์ ์ฅ์>
-
์๊ฒฉ ์ ์ฅ์๋ฅผ ์ ๊ฑฐํ๊ณ ๊ด๋ จ๋ ๋ธ๋์น๋ ์ ๊ฑฐํ๊ธฐ
git remote rm <์๊ฒฉ ์ ์ฅ์>
- Git์
Coffee
, Github์CoffeeShop
์ด๋ค.
Github๊ณผ ๋น์ทํ ์ฌ์ดํธ
- Bitbucket : ๋ฌด๋ฃ
- GitLab : ์ ๋ฃ
- Azure DevOps : ์ ๋ฃ
- java
public class MergeSort1 { public static void main(String[] args) { int[] test = {59, 2, 41, 9, 10, 1, 8, 3}; List<Integer> test2 = new ArrayList<Integer>(); for (Integer i : test) { test2.add(i); } System.out.println(Arrays.toString(mergeSort(test))); // System.out.println(mergeSort(test2).toString()); } // ๋ณํฉ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ - ๋ฐฐ์ด public static int[] mergeSort(int[] numbers) { // ์ ๋ ฌํ๋ ค๋ ๋ฐฐ์ด์ ์์๊ฐ ํ๋๋ผ๋ฉด ๋ฐฐ์ด ๊ทธ๋๋ก ๋ฆฌํด : ์ฌ๊ทํธ์ถ์ ์ข ๋ฃ ์กฐ๊ฑด if (numbers.length < 2) { return numbers; } // ๋ถํ ํ ์์๋ค์ ๋ด์ ๋ฐฐ์ด, 0๋ถํฐ ์ ๋ฐ๊น์ง(์์์ ๊ฐฏ์๊ฐ ํ์์ ๊ฒฝ์ฐ ์์์ ์ ์ญ) int[] leftArray = Arrays.copyOfRange(numbers, 0, numbers.length / 2); /* ํ์ธ์ฉ */ System.out.println(Arrays.toString(leftArray)); // ๋ถํ ํ ์์๋ค์ ๋ด์ ๋ฐฐ์ด, ์ ๋ฐ๋ถํฐ ๋๊น์ง int[] rightArray = Arrays.copyOfRange(numbers, numbers.length / 2, numbers.length); /* ํ์ธ์ฉ */ System.out.println(Arrays.toString(rightArray)); // ๋ถํ ํ ๋ฐฐ์ด์ ๊ฐ๊ฐ ์ ๋ ฌํ์ฌ ๋ณํฉํ๊ธฐ return merge(mergeSort(leftArray), mergeSort(rightArray)); } // ๋ณํฉ private static int[] merge(int[] left, int[] right) { // ์ผ์ชฝ ๋ฐฐ์ด์ ์์๋ฅผ ์ ์ฅํ๋ ํฌ์ธํฐ int leftPtr = 0; // ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ ์์๋ฅผ ์ ์ฅํ๋ ํฌ์ธํฐ int rightPtr = 0; // ๋ณํฉํ ๋ฐฐ์ด์ ๊ฐ์ ์ ์ฅํ ์์น๋ฅผ ๋ํ๋ด๋ ๋ณ์ int index = 0; // ์ผ์ชฝ ๋ฐฐ์ด๊ณผ ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ ๋ณํฉํ ๋ฐฐ์ด ์์ฑ int[] merged = new int[left.length + right.length]; // ์ผ์ชฝ ๋ฐฐ์ด์ ํฌ์ธํฐ๊ฐ ์ผ์ชฝ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ณด๋ค ์ปค์ง๊ฑฐ๋ // ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ ํฌ์ธํฐ๊ฐ ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ณด๋ค ์ปค์ง๋ฉด ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ while (leftPtr < left.length && rightPtr < right.length) { // System.out.println("1๋ฒ์งธ while๋ฌธ์ leftPtr : " + leftPtr); // System.out.println("1๋ฒ์งธ while๋ฌธ์ rightPtr : " + rightPtr); // ์ผ์ชฝ ๋ฐฐ์ด์ leftPtr๋ฒ์งธ ์์ ๊ฐ์ด ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ rightPtr ์์ ๊ฐ๋ณด๋ค ์๋ค๋ฉด if (left[leftPtr] < right[rightPtr]) { // ์๋ก ๋ง๋ ๋ฐฐ์ด์ index๋ฒ์งธ์ ๊ฐ์ ์ถ๊ฐํ๊ณ merged[index] = left[leftPtr]; // leftPtr ์ฆ๊ฐ leftPtr++; // index ์ฆ๊ฐ index++; // ์ผ์ชฝ ๋ฐฐ์ด์ leftPtr๋ฒ์งธ ์์ ๊ฐ์ด ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ rightPtr ์์ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด } else { // ์๋ก ๋ง๋ ๋ฐฐ์ด์ index๋ฒ์งธ์ ๊ฐ์ ์ถ๊ฐํ๊ณ merged[index] = right[rightPtr]; // rightPtr ์ฆ๊ฐ rightPtr++; // index ์ฆ๊ฐ index++; } } // System.out.println(left.length); // System.out.println(right.length); // System.out.println(leftPtr); // System.out.println(rightPtr); // ์ ์กฐ๊ฑด์์ ๊ฒ์ฌํ์ง ๋ชปํ ์์๋ฅผ ์ฌ์ฐจ ๊ฒ์ฌ(์ผ์ชฝ) // ์ผ์ชฝ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์น์ ๊ฐ์ ์ฝ์ ํ๋์ง๋ฅผ ์ฒดํฌํ๋ ๊ฒ // ๊ฐ์ด true ๋ผ๋ฉด ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๊ฐ์ ์ฝ์ ํจ while (leftPtr < left.length) { merged[index] = left[leftPtr]; leftPtr++; index++; } // ์ ์กฐ๊ฑด์์ ๊ฒ์ฌํ์ง ๋ชปํ ์์๋ฅผ ์ฌ์ฐจ ๊ฒ์ฌ(์ค๋ฅธ์ชฝ) // ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์น์ ๊ฐ์ ์ฝ์ ํ๋์ง๋ฅผ ์ฒดํฌํ๋ ๊ฒ // ๊ฐ์ด true ๋ผ๋ฉด ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๊ฐ์ ์ฝ์ ํจ while (rightPtr < right.length) { merged[index] = right[rightPtr]; rightPtr++; index++; } return merged; } /***************************************************************************/ // ๋ณํฉ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด - ๋ฆฌ์คํธ public static List<Integer> mergeSort(List<Integer> values) { if (values.size() < 2) { return values; } List<Integer> leftHalf = values.subList(0, values.size() / 2); List<Integer> rightHalf = values.subList(values.size() / 2, values.size()); return merge(mergeSort(leftHalf), mergeSort(rightHalf)); } // ๋ณํฉ private static List<Integer> merge(List<Integer> left, List<Integer> right) { int leftPtr = 0; int rightPtr = 0; List<Integer> merged = new ArrayList<>(left.size() + right.size()); while (leftPtr < left.size() && rightPtr < right.size()) { if (left.get(leftPtr) < right.get(rightPtr)) { merged.add(left.get(leftPtr)); leftPtr++; } else { merged.add(right.get(rightPtr)); rightPtr++; } } while (leftPtr < left.size()) { merged.add(left.get(leftPtr)); leftPtr++; } while (rightPtr < right.size()) { merged.add(right.get(rightPtr)); rightPtr++; } return merged; } }
-
๋ฌธ์ ์ค๋ช
- 0 ๋๋ ์์ ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์๋ฅผ ์ด์ด ๋ถ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์์๋ด ์ฃผ์ธ์.
์๋ฅผ ๋ค์ด, ์ฃผ์ด์ง ์ ์๊ฐ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋ง๋ค ์ ์๊ณ , ์ด์ค ๊ฐ์ฅ ํฐ ์๋ 6210์ ๋๋ค.
- 0 ๋๋ ์์ ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์์๋ฅผ ์ฌ๋ฐฐ์นํ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
- 0 ๋๋ ์์ ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์๋ฅผ ์ด์ด ๋ถ์ฌ ๋ง๋ค ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์์๋ด ์ฃผ์ธ์.
-
์ ํ ์ฌํญ
- numbers์ ๊ธธ์ด๋ 1 ์ด์ 100,000 ์ดํ์ ๋๋ค.
- numbers์ ์์๋ 0 ์ด์ 1,000 ์ดํ์ ๋๋ค.
- ์ ๋ต์ด ๋๋ฌด ํด ์ ์์ผ๋ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด return ํฉ๋๋ค.
-
ํ์ด
// ์ฃผ์ด์ง๋ ๊ฐ int[] n = {3, 30, 34, 5, 9}; String solution7(int[] n){ String answer = ""; // ์ฝ๋ ์์ฑ return answer; }
// ์ฃผ์ด์ง๋ ๊ฐ int[] n = {3, 30, 34, 5, 9}; String solution7(int[] n){ String answer = ""; // ์ฝ๋ ์์ฑ return answer; }
-
๋ฌธ์
- ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง N๊ฐ์ ๋จ์ด๊ฐ ๋ค์ด์ค๋ฉด ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- ๊ธธ์ด๊ฐ ์งง์ ๊ฒ๋ถํฐ
- ๊ธธ์ด๊ฐ ๊ฐ์ผ๋ฉด ์ฌ์ ์์ผ๋ก
- ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง N๊ฐ์ ๋จ์ด๊ฐ ๋ค์ด์ค๋ฉด ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
-
์ ๋ ฅ
- ์ฒซ์งธ ์ค์ ๋จ์ด์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1โคNโค20,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋จ์ด๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ 50์ ๋์ง ์๋๋ค.
-
์ถ๋ ฅ
- ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ฌํ์ฌ ๋จ์ด๋ค์ ์ถ๋ ฅํ๋ค. ๋จ, ๊ฐ์ ๋จ์ด๊ฐ ์ฌ๋ฌ ๋ฒ ์ ๋ ฅ๋ ๊ฒฝ์ฐ์๋ ํ ๋ฒ์ฉ๋ง ์ถ๋ ฅํ๋ค.
-
ํ์ด
void solution5(){ Scanner sc = new Scanner(System.in); int count = Integer.parseInt(sc.nextLine().trim()); }
void solution5(){ }
-
๋ฌธ์
-
์๊ทผ์ด๋ ๋๋ฌด M๋ฏธํฐ๊ฐ ํ์ํ๋ค. ๊ทผ์ฒ์ ๋๋ฌด๋ฅผ ๊ตฌ์ ํ ๊ณณ์ด ๋ชจ๋ ๋งํด๋ฒ๋ ธ๊ธฐ ๋๋ฌธ์, ์ ๋ถ์ ๋ฒ๋ชฉ ํ๊ฐ๋ฅผ ์์ฒญํ๋ค. ์ ๋ถ๋ ์๊ทผ์ด๋ค ์ง ๊ทผ์ฒ์ ๋๋ฌด ํ ์ค์ ๋ํ ๋ฒ๋ชฉ ํ๊ฐ๋ฅผ ๋ด์ฃผ์๊ณ , ์๊ทผ์ด๋ ์๋ก ๊ตฌ์ ํ ๋ชฉ์ฌ์ ๋จ๊ธฐ์ ์ด์ฉํด์ ๋๋ฌด๋ฅผ ๊ตฌํ ๊ฒ์ด๋ค.
-
๋ชฉ์ฌ์ ๋จ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋ค. ๋จผ์ , ์๊ทผ์ด๋ ์ ๋จ๊ธฐ์ ๋์ด H๋ฅผ ์ง์ ํด์ผ ํ๋ค. ๋์ด๋ฅผ ์ง์ ํ๋ฉด ํฑ๋ ์ด ๋ ์ผ๋ก๋ถํฐ H๋ฏธํฐ ์๋ก ์ฌ๋ผ๊ฐ๋ค. ๊ทธ ๋ค์, ํ ์ค์ ์ฐ์ํด์๋ ๋๋ฌด๋ฅผ ๋ชจ๋ ์ ๋จํด๋ฒ๋ฆฐ๋ค. ๋ฐ๋ผ์, ๋์ด๊ฐ H๋ณด๋ค ํฐ ๋๋ฌด๋ H ์์ ๋ถ๋ถ์ด ์๋ฆด ๊ฒ์ด๊ณ , ๋ฎ์ ๋๋ฌด๋ ์๋ฆฌ์ง ์์ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ํ ์ค์ ์ฐ์ํด์๋ ๋๋ฌด์ ๋์ด๊ฐ 20, 15, 10, 17์ด๋ผ๊ณ ํ์. ์๊ทผ์ด๊ฐ ๋์ด๋ฅผ 15๋ก ์ง์ ํ๋ค๋ฉด, ๋๋ฌด๋ฅผ ์๋ฅธ ๋ค์ ๋์ด๋ 15, 15, 10, 15๊ฐ ๋ ๊ฒ์ด๊ณ , ์๊ทผ์ด๋ ๊ธธ์ด๊ฐ 5์ธ ๋๋ฌด์ 2์ธ ๋๋ฌด๋ฅผ ๋ค๊ณ ์ง์ ๊ฐ ๊ฒ์ด๋ค. (์ด 7๋ฏธํฐ๋ฅผ ์ง์ ๋ค๊ณ ๊ฐ๋ค)
-
์๊ทผ์ด๋ ํ๊ฒฝ์ ๋งค์ฐ ๊ด์ฌ์ด ๋ง๊ธฐ ๋๋ฌธ์, ๋๋ฌด๋ฅผ ํ์ํ ๋งํผ๋ง ์ง์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ค๊ณ ํ๋ค. ์ด๋, ์ ์ด๋ M๋ฏธํฐ์ ๋๋ฌด๋ฅผ ์ง์ ๊ฐ์ ธ๊ฐ๊ธฐ ์ํด์ ์ ๋จ๊ธฐ์ ์ค์ ํ ์ ์๋ ๋์ด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
-
-
์ ๋ ฅ
-
์ฒซ์งธ ์ค์ ๋๋ฌด์ ์ N๊ณผ ์๊ทผ์ด๊ฐ ์ง์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ค๊ณ ํ๋ ๋๋ฌด์ ๊ธธ์ด M์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 1,000,000, 1 โค M โค 2,000,000,000)
-
๋์งธ ์ค์๋ ๋๋ฌด์ ๋์ด๊ฐ ์ฃผ์ด์ง๋ค. ๋๋ฌด์ ๋์ด์ ํฉ์ ํญ์ M์ ๋๊ธฐ ๋๋ฌธ์, ์๊ทผ์ด๋ ์ง์ ํ์ํ ๋๋ฌด๋ฅผ ํญ์ ๊ฐ์ ธ๊ฐ ์ ์๋ค. ๋์ด๋ 1,000,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์ ๋๋ 0์ด๋ค.
-
-
์ถ๋ ฅ
- ์ ์ด๋ M๋ฏธํฐ์ ๋๋ฌด๋ฅผ ์ง์ ๊ฐ์ ธ๊ฐ๊ธฐ ์ํด์ ์ ๋จ๊ธฐ์ ์ค์ ํ ์ ์๋ ๋์ด์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
-
ํ์ด
void solution5(){ Scanner sc = new Scanner(System.in); int count = Integer.parseInt(sc.nextLine().trim()); }
void solution5(){ }