[์ผ๊ตฌ ๊ฒ์ ํ๋ก๊ทธ๋จ] n Strike ! n Ball !
๋ฐ์ดํฐ ํ์ ์ ๋ฐฐ์ด(Array)๊ณผ List, Set ์ธํฐํ์ด์ค ArrayList, HashSet ํ์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ผ๋ก ์์ฑํด๋ดค๋ค.
โ๏ธ ๊ฒ์์ ๊ท์น์ ๋ง๊ฒ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
A. 0~9 ์ฌ์ด์ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ๋ 3์๋ฆฌ ์ ๋๋ค ์์ฑ
- ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ๋์ ์์ฑ ์ ์ค๋ณต ์ฒดํฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผํ ๊น?
- ์ค๋ณต์ด ํ์ฉ๋๋ Array ์์๋ if๋ฌธ (์ค๋ณต ์ฒดํฌ)
- ์ค๋ณต์ด ํ์ฉ๋์ง ์๋ ์ปฌ๋ ์ Set ์ธํฐํ์ด์ค ์ฌ์ฉ
for (int i = 0; i < randomNum.length; i++) {
randomNum[i] = (int) (Math.random() * 10);
for (int j = 0; j < i; j++) {
if (randomNum[i] == randomNum[j]) {
i--;
break;
}
}
}
HashSet ์ ์ค๋ณต ๊ฐ์ ์๋์ผ๋ก ํํฐ๋งํ๋ค.
์๋ฆฌ์ ์ซ์๋ฅผ ๋ชจ๋ ๋น๊ตํ๊ธฐ ์ํด HashSet์ ์ ์ฅ๋ ๊ฐ์ฒด๋ค์ ArrayList์ ๋ด์๋ค.
Set<Integer> set = new HashSet<>();
while (set.size() < 3) {
int randomNum = (int) (Math.random() * 10);
set.add(randomNum);
}
List<Integer> randomList = new ArrayList<>(set);
์ซ์ ํํ์ ์ ๋ ฅ๊ฐ(๋ฌธ์์ด)์ ์ซ์๋ก ๋ณํ ํ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
String์ผ๋ก ์ ์ฅ๋ ๋ฌธ์์ด ์ค์์ ํ ๊ธ์๋ง ์ ํํด์ char ํ์ ์ผ๋ก๋ณํํ๋ charAt()
Char ํ์ ์ Intํ์ ์ผ๋ก ๋ฐ๊พธ๋ getNumericValue() ๋ฉ์๋
String userInputNum = sc.nextLine();
for (int i = 0; i < 3; i++) {
inputNum[i] = Character.getNumericValue(userInputNum.charAt(i));
}
B. ์๋ฆฌ์ ์ซ์ ์ผ์น : ์คํธ๋ผ์ดํฌ
C. ์ซ์๋ง ์ผ์น : ๋ณผ
- ๋๋ค๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๋ฐฐ์ด๊ณผ ์ ๋ ฅ๋ ๊ฐ์ ๋ฐฐ์ด์ ๋น๊ต
- ๊ฐ๊ณผ ์์น๊ฐ ๋ชจ๋ ์ผ์นํ๋๊ฐ?
- ์์น๋ง ์ผ์นํ๋๊ฐ?
for (int i = 0; i < 3; i++) {
if (randomNum[i] == inputNum[i]) {
strike++;
} else {
for (int j = 0; j < 3; j++) {
if (i != j && randomNum[j] == inputNum[i]) {
ball++;
}
}
}
}
for (int i = 0; i < 3; i++) {
if (randomList.get(i) == inputNum[i]) {
strike++;
} else if (randomList.contains(inputNum[i])) {
ball++;
}
}
๐ก Array ํ์ ์ ์ค๋ณต ๊ฒ์ฌ์ ์ผ์น ์ฌ๋ถ ์ฝ๋๋ฅผ List, Set ์ธํฐํ์ด์ค๋ก ์ฝ๋๋ฅผ ๋ณด๋ค ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์๋ค.
๐ก๊ฐ๊ฐ์ ์๋ฃ ๊ตฌ์กฐ๋ ์ฅ๋จ์ ์ด ์์ผ๋ ํน์ฑ์ ์ดํดํ๊ณ ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.