๐ญ Chapter 2: ์๋ฏธ์๋ ์ด๋ฆ
๐ ์๋๋ฅผ ๋ถ๋ช ํ ๋ฐํ๋ผโ
์ข์ ์ด๋ฆ์ ์ง์ผ๋ ค๋ฉด ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง๋ง ์ข์ ์ด๋ฆ์ผ๋ก ์ ์ฝํ๋ ์๊ฐ์ด ํจ์ฌ ๋ ๋ง๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ฆ์ ์ฃผ์ ๊น๊ฒ ์ดํด ๋ ๋์ ์ด๋ฆ์ด ๋ ์ค๋ฅด๋ฉด ๊ฐ ์ ํ๊ธฐ ๋ฐ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด ์ข ๋ ํ๋ณตํด์ง๋ฆฌ๋ผ.
๋ณ์๋ ํจ์ ๊ทธ๋ฆฌ๊ณ ํด๋์ค ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ ๊ตต์งํ ์ง๋ฌธ์ ๋ชจ๋ ๋ตํด์ผ ํ๋ค. ๋ณ์(ํน์ ํจ์๋ ํด๋์ค)์ ์กด์ฌ ์ด์ ๋? ์ํ ๊ธฐ๋ฅ์? ์ฌ์ฉ ๋ฐฉ๋ฒ์? ๋ฐ๋ก ์ฃผ์์ด ํ์ํ๋ค๋ฉด ์๋๋ฅผ ๋ถ๋ช ํ ๋๋ฌ๋ด์ง ๋ชปํ๋ค๋ ๋ง์ด๋ค.
int d; // ๊ฒฝ๊ณผ ์๊ฐ(๋จ์: ๋ ์ง)
์ด๋ฆ d
๋ ์๋ฌด ์๋ฏธ๋ ๋๋ฌ๋์ง ์๋๋ค. ๊ฒฝ๊ณผ ์๊ฐ์ด๋ ๋ ์ง๋ผ๋ ๋๋์ด ์ ๋ ๋ค. ์ธก์ ํ๋ ค๋ ๊ฐ๊ณผ ๋จ์๋ฅผ ํํํ๋ ์ด๋ฆ์ด ํ์ํ๋ค.
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;
์๋๊ฐ ๋๋ฌ๋๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด ์ฝ๋ ์ดํด์ ๋ณ๊ฒฝ์ด ์ฌ์์ง๋ค. ๋ค์ ์ฝ๋๋ ๋ฌด์์ ํ ๊น?
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] == 4)
list1.add(x);
return list1;
}
์ฝ๋๊ฐ ํ๋ ์ผ์ ์ง์ํ๊ธฐ ์ด๋ ต๋ค. ๋ฌธ์ ๋ ์ฝ๋์ ๋จ์์ฑ์ด ์๋๋ผ ์ฝ๋์ ํจ์ถ์ฑ์ด๋ค. ๋ค์ ๋งํด, ์ฝ๋ ๋งฅ๋ฝ์ด ์ฝ๋ ์์ฒด์ ๋ช ์์ ์ผ๋ก ๋๋ฌ๋์ง ์๋๋ค. ์ ์ฝ๋๋ ์์๋ฆฌ์ ๋ ์์ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
theList
์ ๋ฌด์์ด ๋ค์๋๊ฐ?theList
์์ 0๋ฒ์งธ ๊ฐ์ด ์ด์งธ์ ์ค์ํ๊ฐ?- ๊ฐ 4๋ ๋ฌด์จ ์๋ฏธ์ธ๊ฐ?
- ํจ์๊ฐ ๋ฐํํ๋ ๋ฆฌ์คํธ
list1
์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋๊ฐ?
์ ์ฝ๋ ์ํ์ ์ด์ ๊ฐ์ ์ ๋ณด๊ฐ ๋๋ฌ๋์ง ์๋๋ค. ํ์ง๋ง ์ ๋ณด ์ ๊ณต์ ์ถฉ๋ถํ ๊ฐ๋ฅํ์๋ค. ์ง๋ขฐ์ฐพ๊ธฐ ๊ฒ์์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ์. ๊ทธ๋ฌ๋ฉด theList
๊ฐ ๊ฒ์ํ์ด๋ผ๋ ์ฌ์ค์ ์๋ค. theList
๋ฅผ gameBoard
๋ก ๋ฐ๊ฟ๋ณด์.
๊ฒ์ํ์์ ๊ฐ ์นธ์ ๋จ์ ๋ฐฐ์ด๋ก ํํํ๋ค. ๋ฐฐ์ด์์ 0๋ฒ์งธ ๊ฐ์ ์นธ ์ํ๋ฅผ ๋ปํ๋ค. ๊ฐ 4๋ ๊น๋ฐ์ด ๊ฝํ ์ํ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๊ฐ ๊ฐ๋ ์ ์ด๋ฆ๋ง ๋ถ์ฌ๋ ์ฝ๋๊ฐ ์๋นํ ๋์์ง๋ค.
public List<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell : gameBoard)
if (cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
์์์ ๋ณด๋ฏ, ์ฝ๋์ ๋จ์์ฑ์ ๋ณํ์ง ์์๋ค. ์ฐ์ฐ์ ์์ ์์ ์๋ ์์ ์์ ๋๊ฐ์ผ๋ฉฐ, ๋ค์ฌ์ฐ๊ธฐ ๋จ๊ณ๋ ๋์ผํ๋ค. ๊ทธ๋ฐ๋ฐ๋ ์ฝ๋๋ ๋์ฑ ๋ช ํํด์ก๋ค.
ํ ๊ฑธ์ ๋ ๋์๊ฐ, int
๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๋์ , ์นธ์ ๊ฐ๋จํ ํด๋์ค๋ก ๋ง๋ค์ด๋ ๋๊ฒ ๋ค. isFlagged
๋ผ๋ ์ข ๋ ๋ช
์์ ์ธ ํจ์๋ฅผ ์ฌ์ฉํด FLAGGED
๋ผ๋ ์์๋ฅผ ๊ฐ์ถฐ๋ ์ข๊ฒ ๋ค.
public List<Cell> getFlaggedCells() {
List<Cell> flaggedCells = new ArrayList<Cell>();
for (Cell cell : gameBoard)
if (cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}
๋จ์ํ ์ด๋ฆ๋ง ๊ณ ์ณค๋๋ฐ๋ ํจ์๊ฐ ํ๋ ์ผ์ ์ดํดํ๊ธฐ ์ฌ์์ก๋ค. ๋ฐ๋ก ์ด๊ฒ์ด ์ข์ ์ด๋ฆ์ด ์ฃผ๋ ์๋ ฅ์ด๋ค.
๐ ๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ํผํ๋ผโ
ํ๋ก๊ทธ๋๋จธ๋ ์ฝ๋์ ๊ทธ๋ฆ๋ ๋จ์๋ฅผ ๋จ๊ฒจ์๋ ์ ๋๋ค. ๊ทธ๋ฆ๋ ๋จ์๋ ์ฝ๋ ์๋ฏธ๋ฅผ ํ๋ฆฐ๋ค. ๋๋ฆ๋๋ก ๋๋ฆฌ ์ฐ์ด๋ ์๋ฏธ๊ฐ ์๋ ๋จ์ด๋ฅผ ๋ค๋ฅธ ์๋ฏธ๋ก ์ฌ์ฉํด๋ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, hp
, aix
, sco
๋ ๋ณ์ ์ด๋ฆ์ผ๋ก ์ ํฉํ์ง ์๋ค. ์ ๋์ค ํ๋ซํผ์ด๋ ์ ๋์ค ๋ณ์ข
์ ๊ฐ๋ฆฌํค๋ ์ด๋ฆ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ๋ฌ ๊ณ์ ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ ๋, ์ค์ List
๊ฐ ์๋๋ผ๋ฉด, accountList
๋ผ ๋ช
๋ช
ํ์ง ์๋๋ค. ํ๋ก๊ทธ๋๋จธ์๊ฒ List
๋ผ๋ ๋จ์ด๋ ํน์ํ ์๋ฏธ๋ค. ๊ทธ๋ฌ๋ฏ๋ก accountGroup
, bunchOfAccounts
, ์๋๋ฉด ๋จ์ํ Accounts
๋ผ ๋ช
๋ช
ํ๋ค.
์๋ก ํก์ฌํ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํ๋ค. ํ ๋ชจ๋์์ XYZControllerForEfficientHandlingOfStrings
๋ผ๋ ์ด๋ฆ์ ์ฌ์ฉํ๊ณ , ์กฐ๊ธ ๋จ์ด์ง ๋ชจ๋์์ XYZControllerForEfficientStorageOfStrings
๋ผ๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ค๋ฉด? ์ฐจ์ด๋ฅผ ์์์ฑ๋๊ฐ? ๋ ๋จ์ด๋ ๊ฒ๋๊ฒ ๋น์ทํ๋ค.
์ ์ฌํ ๊ฐ๋
์ ์ ์ฌํ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. ์ด๊ฒ๋ ์ ๋ณด๋ค. ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ ํ๊ธฐ๋ฒ์ ๊ทธ๋ฆ๋ ์ ๋ณด๋ค. ์ด๋ฆ์ผ๋ก ๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ง์ง ๋์ฐํ ์๊ฐ ์๋ฌธ์ L
์ด๋ ๋๋ฌธ์ O
๋ณ์๋ค. ๋ ๋ณ์๋ฅผ ํ๊บผ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋์ฑ ๋์ฐํด์ง๋ค. ์๋ฌธ์ L
์ ์ซ์ 1์ฒ๋ผ ๋ณด์ด๊ณ ๋๋ฌธ์ O
๋ ์ซ์ 0์ฒ๋ผ ๋ณด์ธ๋ค.
๐ ์๋ฏธ ์๊ฒ ๊ตฌ๋ถํ๋ผโ
์ปดํ์ผ๋ฌ๋ ์ธํฐํ๋ฆฌํฐ๋ง ํต๊ณผํ๋ ค๋ ์๊ฐ์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌํํ๋ ํ ๋ก๊ทธ๋๋จธ๋ ์ค์ค๋ก ๋ฌธ์ ๋ฅผ ์ผ์ผํจ๋ค. ์๋ฅผ ๋ค์ด, ๋์ผํ ๋ฒ์ ์์์๋ ๋ค๋ฅธ ๋ ๊ฐ๋ ์ ๊ฐ์ ์ด๋ฆ์ ์ฌ์ฉํ์ง ๋ชปํ๋ค. ์ด๋ฆ์ด ๋ฌ๋ผ์ผ ํ๋ค๋ฉด ์๋ฏธ๋ ๋ฌ๋ผ์ ธ์ผ ํ๋ค.
์ฐ์์ ์ธ ์ซ์๋ฅผ ๋ง๋ถ์ธ ์ด๋ฆ(a1, a2, ..., aN)์ ์๋์ ์ธ ์ด๋ฆ๊ณผ ์ ๋ฐ๋๋ค. ์ด๋ฐ ์ด๋ฆ์ ๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ด๋ฆ๋ ์๋๋ฉฐ, ์๋ฌด๋ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ๋ชปํ๋ ์ด๋ฆ์ผ ๋ฟ์ด๋ค. ์ ์ ์๋๊ฐ ์ ํ ๋๋ฌ๋์ง ์๋๋ค.
public static void copyChars(char a1[], char a2[]) {
for (int i = 0; i < a1.length; i++) {
a2[i] = a1[i];
}
}
ํจ์ ์ธ์ ์ด๋ฆ์ผ๋ก source
์ destination
์ ์ฌ์ฉํ๋ค๋ฉด ์ฝ๋ ์ฝ๊ธฐ๊ฐ ํจ์ฌ ๋ ์ฌ์์ง๋ค.
๋ถ์ฉ์ด๋ฅผ ์ถ๊ฐํ ์ด๋ฆ ์ญ์ ์๋ฌด๋ฐ ์ ๋ณด๋ ์ ๊ณตํ์ง ๋ชปํ๋ค. Product
๋ผ๋ ํด๋์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์. ๋ค๋ฅธ ํด๋์ค๋ฅผ ProductInfo
ํน์ ProductData
๋ผ ๋ถ๋ฅธ๋ค๋ฉด ๊ฐ๋
์ ๊ตฌ๋ถํ์ง ์์ ์ฑ ์ด๋ฆ๋ง ๋ฌ๋ฆฌํ ๊ฒฝ์ฐ๋ค. Info
๋ Data
๋ a
, an
, the
์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฏธ๊ฐ ๋ถ๋ถ๋ช
ํ ๋ถ์ฉ์ด๋ค.
a
๋ the
์ ๊ฐ์ ์ ๋์ด๋ฅผ ์ฌ์ฉํ์ง ๋ง๋ผ๋ ์๋ฆฌ๊ฐ ์๋๋ค. ์๋ฏธ๊ฐ ๋ถ๋ช
ํ ๋ค๋ฅด๋ค๋ฉด ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํ๋ค.
๋ถ์ฉ์ด๋ ์ค๋ณต์ด๋ค. ๋ณ์ ์ด๋ฆ์ variable
์ด๋ผ๋ ๋จ์ด๋ ๋จ์ฐ์ฝ ๊ธ๋ฌผ์ด๋ค. ํ์ด๋ฆ์ table
์ด๋ผ๋ ๋จ์ด๋ ๋ง์ฐฌ๊ฐ์ง๋ค. NameString
์ด Name
๋ณด๋ค ๋ญ๊ฐ ๋์๊ฐ? Name
์ด ๋ถ๋์์๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋๊ฐ? ๊ทธ๋ ๋ค๋ฉด ์์ ์ธ๊ธํ "๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ํผํ๋ผ" ๊ท์น์ ์๋ฐํ๋ค.
๊ฐ๋ฐ์๋ฅผ ๋ณดํธํ๊ณ ์ ์ด๋ฆ์ ๋ฐ๊ฟจ์ผ๋ ์ค๋ฅ ํํ๋ ์ ํํ ๋ค์๊ณผ ๊ฐ๋ค.
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
์ด ํ๋ก์ ํธ์ ์ฐธ์ฌํ ํ๋ก๊ทธ๋๋จธ๋ ์ด๋ ํจ์๋ฅผ ํธ์ถํ ์ง ์ด๋ป๊ฒ ์๊น?
๋ช
ํํ ๊ด๋ก๊ฐ ์๋ค๋ฉด ๋ณ์ moneyAmount
๋ money
์ ๊ตฌ๋ถ์ด ์ ๋๋ค. customerInfo
๋ customer
์, accountData
๋ account
์, theMessage
๋ message
์ ๊ตฌ๋ถ์ด ์ ๋๋ค. ์ฝ๋ ์ฌ๋์ด ์ฐจ์ด๋ฅผ ์๋๋ก ์ด๋ฆ์ ์ง์ด๋ผ.
๐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ๋ผโ
๋ฐ์ํ๊ธฐ ์ด๋ ค์ด ์ด๋ฆ์ ํ ๋ก ํ๊ธฐ๋ ์ด๋ ต๋ค. ๋ฐ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ค์ํ๋ค. ํ๋ก๊ทธ๋๋ฐ์ ์ฌํ ํ๋์ด๊ธฐ ๋๋ฌธ์ด๋ค.
class DtaRcrd102 {
private Date genymdhms;
private Date modymdhms;
private final String pszqint = "102";
/* ... */
}
class Customer {
private Date generationTimestamp;
private Date modificationTimestamp;
private final String recordId = "102";
/* ... */
}
๋์งธ ์ฝ๋๋ ์ง์ ์ธ ๋ํ๊ฐ ๊ฐ๋ฅํด์ง๋ค. "๋ง์ดํค, ์ด ๋ ์ฝ๋ ์ข ๋ณด์ธ์. 'Generation Timestamp'๊ฐ์ด ๋ด์ผ ๋ ์ง์ ๋๋ค! ์ด๋ป๊ฒ ์ด๋ ์ฃ ?"
๐ ๊ฒ์ํ๊ธฐ ์ฌ์ด ์๋ฆ์ ์ฌ์ฉํ๋ผโ
๋ฌธ์ ํ๋๋ฅผ ์ฌ์ฉํ๋ ์ด๋ฆ๊ณผ ์์๋ ํ ์คํธ ์ฝ๋์์ ์ฝ๊ฒ ๋์ ๋์ง ์๋๋ค๋ ๋ฌธ์ ์ ์ด ์๋ค.
MAX_CLASSES_PER_STUDENT
๋ grep
์ผ๋ก ์ฐพ๊ธฐ๊ฐ ์ฝ์ง๋ง, ์ซ์ 7์ ์๊ทผํ ๊น๋ค๋กญ๋ค. 7์ด ๋ค์ด๊ฐ๋ ํ์ผ ์ด๋ฆ์ด๋ ์์์ด ๋ชจ๋ ๊ฒ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฐ ๊ด์ ์์ ๊ธด ์ด๋ฆ์ด ์งง์ ์ด๋ฆ๋ณด๋ค ์ข๋ค. ๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ด ์์๋ณด๋ค ์ข๋ค.
๊ฐ์ธ์ ์ผ๋ก๋ ๊ฐ๋จํ ๋ฉ์๋์์ ๋ก์ปฌ ๋ณ์๋ง ํ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ฆ ๊ธธ์ด๋ ๋ฒ์ ํฌ๊ธฐ์ ๋น๋กํด์ผ ํ๋ค. ๋ณ์๋ ์์๋ฅผ ์ฝ๋ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ๋ค๋ฉด ๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ด ๋ฐ๋์งํ๋ค.
// 1
for (int j = 0; j < 34; j++) {
s += (t[j] * 4) / 5;
}
// 2
int realDaysPerIdealDay = 4;
const int WORK_DAYS_PER_WEEK = 5;
int sum = 0;
for (int j = 0; j < NUMBER_OF_TASKS; j++) {
int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
int realTaskWeeks = (realTaskDays / WORK_DAYS_PER_WEEK);
sum += realTaskWeeks;
}
์ ์ฝ๋์์ sum
์ด ๋ณ๋ก ์ ์ฉํ์ง ์์ผ๋ ์ต์ํ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฆ์ ์๋ฏธ์๊ฒ ์ง์ผ๋ฉด ํจ์๊ฐ ๊ธธ์ด์ง๋ค. ํ์ง๋ง WORK_DAYS_PER_WEEK
๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ผ๋ง๋ ์ฌ์ด์ง ์๊ฐํด๋ณด๋ผ. ๊ทธ๋ฅ 5๋ฅผ ์ฌ์ฉํ๋ค๋ฉด 5๊ฐ ๋ค์ด๊ฐ๋ ์ด๋ฆ์ ๋ชจ๋ ์ฐพ์ ํ ์๋ฏธ๋ฅผ ๋ถ์ํด ์ํ๋ ์์๋ฅผ ๊ฐ๋ ค๋ด์ผ ํ๋ฆฌ๋ผ.