๋ฐฐ๊ฒฝ:
๋๋ ์ด ๋ฌธ์ ๋ฅผ ์์ฃผ ์ค๋ซ๋์ ํด๊ฒฐํ์ต๋๋ค . ๊ทธ ์์์ ๋ ๊ฐ์ง ๋ฒ์ ์ ํ์ผ์ ๋น๊ตํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ฐพ์์ผ ํ์ต๋๋ค. ํ์ผ์ ๋ด์ฉ์ ๋ฐฐ์ด ํํ๋ก ์ถ์ถํ์ฌ ๋ฐฐ์ด์ ๋น๊ตํ๊ธฐ๋ก ํ์ต๋๋ค. ๊ทธ๋ฌ๋ค๊ฐ ์ค๋ซ๋์ ๋ฐ๋ณด์ฒ๋ผ ํ๋ํ๊ณ ์ค์๋ฅผ ํ๋ค๊ฐ ๊ฒฐ๊ตญ์๋ ์์ ์์ ์ข ์ด ์์ ๋ฐฐ์ด์ ๊ทธ๋ ธ์ต๋๋ค. ์ฌ์ค ์ด ์ ์๋ ๋ค๋ฅธ ํด๊ฒฐ์ฑ ์ ์ดํด๋ดค์ต๋๋ค . ๊ทธ๋ฐ๋ฐ ๋๋ฌด ๋ณต์กํด์ ๋ง์คํฐํ ์๊ฐ ์๋ค์ :) ๊ฒ๋ค๊ฐ ๊ธฐ์กด ํ์ผ์ด ๊ธด ๊ฒฝ์ฐ์ ์ ํ์ผ์ด ๊ธด ๊ฒฝ์ฐ๋ฅผ ๋๋นํ ์๊ณ ๋ฆฌ์ฆ์ด 2๊ฐ์ง ์์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ข์ํ์ง ์์๋ค.๋ด ์๋ฃจ์ ์ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋์ผํ ๋ฐฐ์ด์ด 2๊ฐ ์์ต๋๋ค. ๋ณธ๋ฌธ ์ ์ฒด์์๋ ์ด๋ฅผ "์ ์ด๋ ์ด" ๋ฐ "๊ธฐ์กด ์ด๋ ์ด"๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ์๋ก์ด ์์๋ฅผ ์ฝ์ ํ ์ ์์ต๋๋ค. ์ ๊ฒ๋ค. ์ฐธ์กฐ ๋ฐฐ์ด์ ๋ชจ๋ ์ญ์ ๊ฐ ํฌํจ๋ ์ด์ ํ์ผ์ ๋ด์ฉ์ ํด๋นํ๋ ๋ฐฐ์ด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ด์ ํ์ผ๊ณผ ์ ํ์ผ์ ๋ด์ฉ์ ์ฝ์ ๋ ์ฐธ์กฐ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฃจํ์์ ๋ ๋ฐฐ์ด(์ด์ ํญ๋ชฉ๊ณผ ์ ํญ๋ชฉ์ ๋ด์ฉ)์ ๋ชจ๋ ์ดํด๋ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ค ํ๋์์ ์ฝ์ ์ ๊ฐ์งํ๋ฉด ๋น๊ต๋ ๋ฐฐ์ด์ ๋์ผํ ์์๊ฐ ๋ค์ ๊ทผ์ฒ์ ์๋๋ก ํ ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค.์ฐ์ฐ:
๋ณ์: i - OLD ํ์ผ์ ๋ด์ฉ์ด ํฌํจ๋ ๋ฐฐ์ด ์ ์ ์ธ๋ฑ์ค์ ๋๋ค. nI - ์ ํ์ผ์ ๋ด์ฉ์ด ํฌํจ๋ ๋ฐฐ์ด ์ ์ ์ธ๋ฑ์ค์ ๋๋ค. ๋ฐฐ์ด์ ์์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ ์์ ๋ณ์์ ์๋๋ค. oldMismatch - ๋์ ๋ฐฐ์ด์ ์์ newMismatch - ์ ๋ฐฐ์ด์ ์์ ๋ฐฐ์ด ์์๋ฅผ ๋ฐ๋ณตํ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.-
oldMismatch ๋ฐ newMismatch ๋ณ์๋ ๋น์ด ์์ต๋๋ค. ๋ ๋ฐฐ์ด์ ์์๋ ๋์ผํฉ๋๋ค. Type.SAME์ ๋ชฉ๋ก์ ์๋๋ค. ๊ณ์ํ์ธ์.
-
oldMismatch ๋ฐ newMismatch ๋ณ์๋ ๋น์ด ์์ต๋๋ค. ๋ ๋ฐฐ์ด์ ์์๋ ๋์ผํ์ง ์์ต๋๋ค. ์ด์ ๊ฐ์ ๊ฐ์ oldMismatch์, ์ ๊ฐ์ ๊ฐ์ newMismatch์ ์๋๋ค. ๊ณ์ํ์ธ์.
-
oldMismatch ๋ฐ newMismatch ๋ณ์๋ ๋น์ด ์์ง ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฐ์ด์ ํ์ฌ ์์์ ๋น๊ตํฉ๋๋ค.
๊ฒฐ๋ก ์ ๋ด๋ฆฌ์. ๊ฒฐ๊ณผ๋ฅผ ๋ชฉ๋ก(lines ๋ณ์)์ ๊ธฐ๋กํฉ๋๋ค. ๋ฐฐ์ด ์ค ํ๋์ ๋ํ ๋ฃจํ ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค.
-
3.1 oldMismatch๋ NEW ๋ฐฐ์ด์ ํ์ฌ ์์์ ๊ฐ์ต๋๋ค. ์ด๋ ํ์ผ์ ํ ์ค์ด ์ถ๊ฐ๋์์์ ์๋ฏธํฉ๋๋ค.
์ด ๋ฌธ์์ด์ ๊ฐ์ newMismatch์ ์ ์ฅ๋ฉ๋๋ค. ๊ทธ๋ ๊ฒ ์ ์ด๋ณด์.
lines.add(new LineItem(Type.ADDED, newMismatch)); lines.add(new LineItem(Type.SAME, oldMismatch));
์ ํ์ผ์ ๋ด์ฉ์ ํฌํจํ๋ ๋ฐฐ์ด์ ์ถ๊ฐ ์์๊ฐ ์์ผ๋ฏ๋ก ์ด์ ๋ฐฐ์ด์ ๊ธฐ์ค์ผ๋ก ์ ๋ฐฐ์ด์ 1 ์์๋ฅผ ์์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ OLD ๋ฐฐ์ด์ 1 ๋ฃจํ ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค.
๋--;
-
3.2 newMismatch๋ OLD ๋ฐฐ์ด์ ํ์ฌ ์์์ ๊ฐ์ต๋๋ค. ์ด๋ ํ์ผ์์ ํ ์ค์ด ์ ๊ฑฐ๋์์์ ์๋ฏธํฉ๋๋ค. ์ ์ด ๋ด ์๋ค.
lines.add(new LineItem(Type.REMOVED, oldMismatch)); lines.add(new LineItem(Type.SAME, newMismatch));
OLD ๋ฐฐ์ด์ ์ถ๊ฐ ์์๊ฐ ์์ต๋๋ค. ์ด๋ NEW ์ด๋ ์ด๊ฐ 1 ๋ฃจํ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ด๋ค๋ ์๋ฏธ์ ๋๋ค.
๋--;
-
-
๋ฐฐ์ด์ ๋์ ์ฒ๋ฆฌํ๋ ์ค์ ๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ์ด์ ๋ฐฐ์ด์ ๋์ ๋๋ฌํ์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ๊ฐ๋ฅํ ์ํฉ์ด ์์ต๋๋ค
-
4.1 - ArrayIndexOutOfBoundsException - ์ ๋ฐฐ์ด์ด ์ด์ ๋ฐฐ์ด๋ณด๋ค ์งง์ต๋๋ค. ํ์ผ์ ๋ง์ง๋ง ์ค์ด ์ญ์ ๋์์์ ๊ธฐ๋กํฉ๋๋ค.
-
4.2 - ์ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ ์ฐ๋ฆฌ์ ๊ด์ฌ ๋์์ด ์๋ ์ฑ๋ก ๋จ์ ์์ต๋๋ค. ์ถ๊ฐ๋ ๊ฒ์ผ๋ก ๊ธฐ๋กํฉ๋๋ค.
-
4.3 - oldMismatch ๋ฐ newMismatch ๋ณ์๊ฐ ๋น์ด ์์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์์ ์ ์ต๋๋ค:
lines.add(new LineItem(Type.ADDED, newMismatch)); lines.add(new LineItem(Type.SAME, oldMismatch));
-
GO TO FULL VERSION