Today I Learned
๐ก To do : ๊ณผ์ ์กฐ๊ฑด
ํ์ ํ ๋ถ๊ณผ ํจ๊ป 2์ธ 1์กฐ๋ก ๊ณผ์ ๋ฅผ ํด๊ฒฐ ํด์ผ ํ๋ค. ํ์ ๋ถ์ ์ ๊ณต์๋ถ์ด์ จ์ง๋ง ์๋ฐ์ ๋ํด์๋ ์ ๋ชจ๋ฅด์ จ๊ธฐ ๋๋ฌธ์ ๋ฐฉํฅ์ฑ์ ๊ฐ์ด ์์ํ๊ณ ์ฝ๋๋ ๋ด๊ฐ ๋ณด๋ค ๋ง์ ๋ถ๋ถ์ ์ง๋ ํธ์ด ํฉ๋ฆฌ์ ์ด๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
1. ์ธํ ๋ฆฌ์ ์ด ์ฐ๋
1๏ธโฃ ์ฒซ ํ๋ฉด์์ ์ค๋ฅธ์ชฝ ์์ ์ฌ๋ ํ์์ +๊ฐ ๋์ด์๋ ๋ฒํผ์ ๋๋ฅธ๋ค.
2๏ธโฃ Start Session ๋ฒํผ์ ๋๋ฅธ๋ค.
3๏ธโฃ ์ด๋ฐ ์ฐฝ์ด ๋จ๋ฉด permission์ ํ์ธํ๊ณ Start session ๋ฒํผ์ ๋๋ฅธ๋ค. ๋ด ๊ฒฝ์ฐ์๋ ์ฝ๋๋ฅผ ํจ๊ป ์ง๊ธฐ ์ํด์ Full access๋ฅผ ์ ํํ๋ค.
4๏ธโฃ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋๋ฉด ํ๋จ์ Creating join link ์๋ฆผ์ด ๋จ๊ณ ์ดํ์ ์๋์ผ๋ก ๋งํฌ๋ฅผ copy ํด์ค๋ค.
5๏ธโฃ ํน์๋ ๋ณต์ฌ๋ ๋งํฌ๋ฅผ ์ ์คํ๋ค๋ฉด ์๊น ๊ทธ ๋ฒํผ์ ๋ค์ ํด๋ฆญํ๋ฉด ์ฌ์ฐจ copy๊ฐ ๊ฐ๋ฅํ๋ค.
6๏ธโฃ ์๋์๊ฒ copy ๋ ๋งํฌ๋ฅผ ์ฃผ๊ณ ์๋๊ฐ ๋งํฌ๋ฅผ ํตํด ์ฐ๋ ์ ์ฒญ์ ํ๋ฉด accept ํ๋ฉด ์ ์ฐ๋์ด ๋๋ค. ํ์ง๋ง ๊ณต์ง๋ก๋ ์ผ์ญ๋ถ์ฉ๋ง ๋๋ค๋ ๊ฑฐ~ ์ผ์ญ๋ถ์ ํ ๋ฒ์ฉ ์์ ๋ด์ฉ์ ๋ฐ๋ณตํด์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ terminal์ ๋งํฌ๋ฅผ ํตํด ๋ค์ด์จ ์๋๋ ์๋ ์ ์๋ค. ์ฐ๋์ด ์๋ฌ๊ฐ ๋ ์ค ์๊ณ ํ๋ฅ๋๋ ์ฐ๋ฆฌ์ ๋ชจ์ต^^!
2. ๊ตฌ์กฐ ํ์ ํ๊ธฐ
์ผ๋จ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ฅผ ํจ๊ป ํ์
ํ๋ค.
๋ง๋ค์ด์ผ ํ๋ ๊ธฐ์ด ๊ธฐ๋ฅ๋ค์ ๋ฆฌ์คํธ์ ํด๊ฒฐ ๋ฐฉ์์ ์ฒดํฌํ๋ค.
โ๏ธ ๋๋ค์ผ๋ก 3์๋ฆฌ ์ซ์ ๋ง๋ค๊ธฐ
ย ย ย ์ด ๋ 3์๋ฆฌ ์์๋ ์ค๋ณต์ด ์์ด์ผ ํจ
โ๏ธ 3์๋ฆฌ ์ซ์๋ฅผ ์ ๋ ฅ ๋ฐ๊ธฐ
ย ย ย ๋ง์ฐฌ๊ฐ์ง๋ก ์ค๋ณต ๊ฐ์ผ ๋ ์ฒ๋ฆฌ ํ์
โ๏ธ ์ ๋ ฅ๋ฐ์ ์์ ๋๋ค ์๋ฅผ ๋น๊ตํด ๋ณผ / ์คํธ๋ผ์ดํฌ ํ๋จํ๊ธฐ
ย ย ย ๋ณผ : ์๋ฆฌ๊ฐ ๋ค๋ฅธ ๊ฐ์ ์ซ์๊ฐ ์๋์ง
ย ย ย ์คํธ๋ผ์ดํฌ : ๊ฐ์ ์ซ์, ๊ฐ์ ์๋ฆฌ
โ๏ธ ์ ๋ต์ ๋ง์ถ์ง ์์์ผ๋ฉด ๋ณผ / ์คํธ๋ผ์ดํฌ ๊ฐ์ ์๋ ค์ฃผ๊ณ ๋ค์ ์ ๋ ฅ๋ฐ๊ธฐ
ย ย ย '1B2S' ์ ๊ฐ์ ํํ๋ก ์๋ ค์ฃผ๊ธฐ
โ๏ธ 3S์ผ ๋์๋ ์ ๋ต์ ๋ง์ท์์ ์๋ ค์ฃผ๊ณ ๊ฒ์์ ์ข ๋ฃํ๊ธฐ
ย ย ย 3S : ๋ชจ๋ ์ซ์๊ฐ ๊ฐ์ ์ซ์์ ๊ฐ์ ์๋ฆฌ์์ ๋ = ์ ๋ต
์ฒ์๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ํ์ด๋๊ฐ๊ธฐ๋ก ๊ฒฐ์ !
์ด๋ค ๋ฐฉ์์ ์ ์ฉ์ํฌ์ง์ ๋ํด์ ๊ธฐ๋ฅ ํ๋์ฉ ์๊ฐํด๋ณด๊ธฐ๋ก ํ๋ค.
3. ์ฝ๋ ์ง๊ธฐ
1) ๋๋ค์ผ๋ก 3์๋ฆฌ ์ซ์ ๋ง๋ค๊ธฐ
์ฝ๋ค๊ณ ์๊ฐํ์ง๋ง ์ด๋๋ ๋ชฐ๋์ฃ , Random ํด๋์ค๊ฐ import ๋์ง ์์ ์ค์ด์ผ...
์ด์ฌํ ์ฐพ์๋ดค์ง๋ง ๋๋ฌด ๋ค์ํ ์์ธ๋ค์ด ์กด์ฌํ๋ ๋๋จธ์ง ์ด๋ ๊ฒ์ด ์ง์ง ์์ธ์ด์๋์ง ์ฌ์ ํ ๋ชจ๋ฅด๊ฒ ๋ค. ์ฌ๊ธฐ์ ๊ธฐ ์ดํด๋ณธ ๊ฒฐ๊ณผ Java์๋ ๋ฑํ ๋ฌธ์ ๊ฐ ์์๊ณ ์๋ฌด๋๋ intelliJ ์์ฒด์ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ๋ค. File -> Project Structure -> Language level ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์ ์ฉ์์ผฐ๋ค๊ฐ ๋ค์ SDK default๋ก ๋ณํํ๋ ํด๊ฒฐ์ด ๋์๋ค! ์ด ๋ฌธ์ ๋ก ์ต์ 30๋ถ ์ต๋ 1์๊ฐ ์ ๋ ๋ ์๊ฐ ๊ฒ ๊ฐ๋ค..
๋ฌดํผ ์ import ๋ ํ์ ์ผ๋จ์ ์ธ์๋ฆฌ ์ซ์๋ฅผ ๋ฐ์ ์ค๋ณต๊ฐ ๊ฒ์ฌ๋ฅผ ํ๊ธฐ๋ก ํ๋ค.
// ๋๋ค ์ ์ธ์ ํ๊ณ
Random random = new Random();
// ์ผ๋จ์ ์ค๋ณต ๊ฒ์ฌ๋ฅผ ์ํด ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ์๋ค.
int[] ansAry = new int[3];
// do ~ while ๋ฌธ์ ์ฌ์ฉํ ์ด์ !
// ์ผ๋จ ์ธ ์๋ฆฌ ์ซ์๋ฅผ ์์ฑํ ํ์ ์ค๋ณต๊ฐ์ด ์๋์ง ๊ฒ์ฌ ํด์ผ ํ๊ธฐ ๋๋ฌธ์
do {
// ์ธ ์๋ฆฌ ์ซ์๊ฐ ๋ค ๋ค๋ฅผ ๋๊น์ง ์์ฑ
ansAry[0] = random.nextInt(9) + 1;
ansAry[1] = random.nextInt(9) + 1;
ansAry[2] = random.nextInt(9) + 1;
} while (ansAry[0] == ansAry[1] || ansAry[1] == ansAry[2] || ansAry[0] == ansAry[2]); // ํ๋๋ผ๋ ๊ฐ์ ๊ฐ์ด ์์ผ๋ฉด ๋ค์ ์์ฑํ๋๋ก ํ์๋ค.
// ์ค๋ณต๋ ๊ฐ ์๋ ์ธ์๋ฆฌ ์๊ฐ ์ ๋ง๋ค์ด์ก๋์ง ํ์ธํ๊ธฐ ์ํ ์ฝ๋๋ ์งฐ๋ค.
// ๋ง์ง๋ง์๋ ์ฃผ์์ฒ๋ฆฌ ํด์ฃผ์๋ค.
answer = ansAry[0] * 100 + ansAry[1] * 10 + ansAry[2];
System.out.println("๋ต : " + answer);
2) 3์๋ฆฌ ์ซ์ ์
๋ ฅ ๋ฐ๊ธฐ
์ ๋ง๋ค์์ผ๋ ์ด์ ์
๋ ฅ์ ๋ฐ์์ผ์ง...
3์๋ฆฌ ์ซ์๋ฅผ intํ์ผ๋ก ์
๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ์ด๋ป๊ฒ ๋ฃ์ด์ผ ํ ์ง ์กฐ๊ธ ๊ณ ๋ฏผํ๋ค.
์ฒ์์๋ string์ผ๋ก ๋ฐ์์ split์ผ๋ก ๋๋ ๋ค์์ ํ๋ณํ ํด์ ์ง์ด๋ฃ์ด์ผ ํ ์ง์ ๋ํด ๊ณ ๋ฏผํ๋ค๊ฐ ๋ฌธ๋ ์์ฃผ ์ข์ ์๊ฐ์ด ๋ฌ๋ค. ์์ ์ซ์ ์ ๋ง๋ค์ด์ก๋์ง ํ
์คํธ ํ๋ ์ฝ๋ ์ง ๊ฒ์ฒ๋ผ ๋๋๊ธฐ ํด์ ๋ฃ์ผ๋ฉด ๋ ์ผ ์๋๊ฐ..? ์ถ์ด์ ์ ๋๊ฐ์ง๊ณ ์ฝ๋ ์ฐ๋ค๊ฐ ๋งํ๋ฒ๋ ธ๋ค.
์ผ๋จ 100์ผ๋ก ๋๋๋ฉด ์ฒซ๋ฒ์งธ ์ซ์๋ ๋จ์ด์งํ
๊ณ 10์ผ๋ก ๋๋ ๋๋จธ์ง๋ 1์์๋ฆฌ ์ซ์๊ฐ ๋๋๋ฐ ์ฅ ๋ ๋ฒ์งธ๋ ์ด๋ป๊ฒ ๊ตฌํ์ง? ์ํ... ์ด์ฌํ ํ ๊ฑธ ํ๋ ์๊ฐ์ ํ๋ค๊ฐ ๊ฒฐ๊ตญ ChatGPT ์ ์๋์๊ฒ ์ฌ์ญค๋ณด์๋ค. 10์ผ๋ก ๋๋ ๋ค์์ 10์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ฉด ๋๋ค๊ณ ํ์
จ๋ค. ๊ฐ์ฌํฉ๋๋ค ์ผ์ธ...!
// Scanner ์ ์ธ
Scanner sc = new Scanner(System.in);
System.out.println("์ธ์๋ฆฌ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์");
System.out.print(">> ");
// int ๊ฐ ์
๋ ฅ๋ฐ๊ธฐ
inputNum = sc.nextInt();
// ๋ฐฐ์ด์ ๋ฃ๊ธฐ
inputAry[0] = inputNum / 100;
inputAry[1] = (inputNum / 10) % 10;
inputAry[2] = inputNum % 10;
// ๋ฐฐ์ด์ ์ ๋ค์ด๊ฐ๋์ง ํ์ธ
System.out.println(Arrays.toString(inputAry));
์ ์ด์ ๋ญ ํ ์ฐจ๋ก์ธ๊ฐ..!
์ค๋ณต๊ฐ์ ํ์ธํด์ผ์ง...
๊ทธ๋ฅ ์์ do ~ while๋ฌธ์์ ์ผ๋ ์กฐ๊ฑด ๊ทธ๋๋ก ์จ๋ ๋๋ ๊ฑฐ๊ธด ํ๋ฐ ์ฐพ์๋ณด๋ Set๋ฅผ ์ด์ฉํ๋ ๋ฒ์ด ์๊ธธ๋ ๊ฐ์ ธ๋ค ์จ๋ณด๊ธฐ๋ก ํ๋ค. ๋ฉ์๋๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํด์ boolean ๊ฐ์ ๋ฐ์ true์ผ ๋ if๋ฌธ์ด ์คํ๋๋๋ก ๋ง๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ์ฐจ ๋ฐ๋ณต์ ์ผ๋ก ์
๋ ฅ๋ฐ๊ธฐ ์ํด ์
๋ ฅ ๋ฐ๋ ๊ณณ๋ถํฐ์ ์ฝ๋๋ ์ ๋ถ whlie๋ฌธ์ผ๋ก ๋ฌถ์ด์ฃผ์๋ค.
์
๋ ฅ๋ถํฐ while๋ก ๋ฌถ์ ์ด์ ๋ ๊ธฐ์กด์ ์ ๋ต๊ฐ(๋๋ค๊ฐ)์ด ๋ฌ๋ผ์ง๋ฉด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
// main method์์ ์คํ๋๋ ์ฝ๋
// checkNum method๋ฅผ ๋ถ๋ฌ์ inputAry๊ฐ์ ๋ฃ์ด์ฃผ๊ณ boolean๊ฐ์ ๋ฐ๋๋ค.
if (checkNum(inputAry)) {
System.out.println("Error: ์ค๋ณต ์ซ์๋ฅผ ์
๋ ฅํ์ต๋๋ค. ๊ฒ์์ ์ข
๋ฃํฉ๋๋ค.");
break; // while๋ฌธ์ ๋๋ด๊ณ ๊ฒ์ ์ข
๋ฃ.
}
// ์ค๋ณต ์ซ์ ์ฒดํฌ method
static boolean checkNum(int[] inputAry) {
// Set ์ ์ธ
Set<Integer> set = new HashSet<>();
// inputAry์์ ๊ฐ์ ํ๋ํ๋ ๊บผ๋ด set์ ๋ฃ๋๋ค.
for (int num : inputAry) {
// set ํน์ฑ์ ์ค๋ณต๊ฐ์ด ์์ผ๋ฉด ์ ์ฅ์ด ๋์ง ์๊ธฐ ๋๋ฌธ์
// num์ set์ ๋ฃ์๋ false๊ฐ์ด ๋จ๋ฉด true๋ฅผ ๋ฐํํ๋ค.
if (!set.add(num)) {
return true;
}
}
// ์ค๋ณต์ด ์์ผ๋ฉด set์ ๋ชจ๋ ๊ฐ์ด ์์ ํ ๋ค์ด๊ฐ๊ณ
// ๋ฐ๋ผ์ if๋ฌธ ์กฐ๊ฑด์ ํผํด๊ฐ๊ธฐ ๋๋ฌธ์ false๋ฅผ ๋ฐํํ๋ค.
return false;
}
3) ์
๋ ฅ๋ฐ์ ์์ ๋๋ค ์๋ฅผ ๋น๊ตํด ๋ณผ / ์คํธ๋ผ์ดํฌ ํ๋จํ๊ธฐ
์ด๊ฒ ์์งํ... ์ ์ผ ์ด๋ ค์ ๋ค. ์๊ฐํ ๊ฑฐ๋ฆฌ๋ ๋ง๊ณ ๊ดํ ์ค๊ธฐ ์๊ฒจ์ GPT ์ผ์ธ ์์ฐพ์๊ฐ๋ ค๋ค๋ณด๋ ์ค๋ฅ๊ฐ ์์ฒญ์์ฒญ ๋์๋ค. ๊ฒฐ๊ตญ ๋ฌผ์ด๋ดค๋๋ฐ๋ ์ ์ด์ํด์ ๊ณ ์น๊ณ ๊ณ ์น๋ค ์ฑ๊ณต. ๋๋ฌด ๊ฐ๊ฒฉ์ค๋ฌ์ ์ด์.
์ด ์ํฉ์ ๋ฌธ์ ๋ ๋ญ์๋๋ฉด ๋ด๊ฐ ball์ strike๋ฅผ ํฌํจํ๋ ๊ด๊ณ๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด์๋ค.
๊ทธ๋ฅ ball๊ณผ strike๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ๋ณด์์ด์ผ ํ๋๋ฐ ball์ด ๋ ๋์ ๊ฐ๋
์ด๊ณ strike๊ฐ ๋ ์ข์ ๊ฐ๋
์ด๋ผ๋ ์๊ฐ์ ์ฌ๋ก์กํ์ ๋ถ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ค. ์๊ฐํด๋ณด๋ฉด ๋ชจ๋ ๊ฐ์์ผ ํ๋ ๊ฒ์ด ์ฝ๋๊ฐ ๋ ์ฝ๊ฒ ๋์ค๋๋ฐ๋... ํ์ ๋ถ์ด ball ์ธ๋ if๋ฌธ ์กฐ๊ฑด์ ์ ์ํ๋ ค๊ณ ํ๋๋ฐ ๋ด๊ฐ ๋ค ๋ณด์ง๋ ์๊ณ ์๊พธ ๋ง์์ด ๊ธํด์ ธ์ ๊ฐ๋ก๋ง์๋ค. ๊ทธ๋๋๊ณ ๋ด๊ฐ ํ๋ค. ๋์ค์ ์ ๊ฐ ํ๋ ค๋ ๊ฒ ๊ทธ๊ฑฐ์์ด์... ํ์
๊ฐ์ง๊ณ ๋ฐ์ฑ ์ข ํ๋ค.
์ผ๋จ method ๋ถ๋ฆฌ๋ฅผ ํ๋ค.
์ฌ์ = ๋์ค์ int ๊ฐ ๋ฐ์์์ ์ถ๋ ฅํ ๋ ์ด๊ฒ ํจ์ฌ ํธํ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์งํ ๊ทธ๋ฅ ์๋ ๊ฑฐ ์ข ์จ๋ณด๊ณ ์ถ์๋ค.
// main method์์ ์คํ๋๋ ์ฝ๋
// ball/strike ์ซ์ ๋ฐ์์ค๊ธฐ
ballCount(ansAry,inputAry);
strCount(ansAry, inputAry);
// ๋๋ค ๋ฐฐ์ด๊ณผ ์
๋ ฅ๋ฐ์ ๋ฐฐ์ด ๋ฐ์์์ ball๊ฐ int๋ก ๋ฐํ
static int ballCount(int[] ansAry, int[] inputAry) {
// ball++๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ ์ธํ ๋ ๊ฐ์ ์ ์ฅํด์ค์ผ ํ๋ค.
int ball = 0;
// ๋ ๋ฐฐ์ด์ ์ ์ฒด๋ฅผ ๋น๊ตํ๊ธฐ ์ํด ์ค์ฒฉ for๋ฌธ ์ฌ์ฉ
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
// i์ j๊ฐ ๋ค๋ฅด๋ค = ์๋ฆฌ(์์น)๊ฐ ๋ค๋ฅด๋ค
// ansAry[i] == inputAry[j] -> ์ซ์๊ฐ ๊ฐ๋ค
if (i != j && ansAry[i] == inputAry[j]) {
ball++; // ball count ์ฌ๋ฆฌ๊ธฐ
}
}
}
return ball; // ball์ ๊ฐ์ ๋ฐํ
}
// ๋๋ค ๋ฐฐ์ด๊ณผ ์
๋ ฅ๋ฐ์ ๋ฐฐ์ด ๋ฐ์์์ strike๊ฐ int๋ก ๋ฐํ
static int strCount(int[] ansAry, int[] inputAry) {
// strike++๋ฅผ ์ํ ๊ฐ ์ ์ฅ
int strike = 0;
// ๊ฐ์ ์๋ฆฌ์ ๊ฐ์ ์ซ์๊ฐ ์๋์ง ์์๋ณด๊ธฐ ์ํด์๋
// ๊ตณ์ด ์ค์ฒฉ for๋ฌธ์ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
// i๋ง ํ์ํ๊ธฐ ๋๋ฌธ
for (int i = 0; i < ansAry.length; i++) {
// ๋ ๋ค๋ฅธ ๋ฐฐ์ด์ ๊ฐ์ ์์น์ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋์ง ํ์ธ
if (ansAry[i] == inputAry[i]) {
strike++; //strike count ์ฌ๋ฆฌ๊ธฐ
}
}
return strike; // strike์ ๊ฐ์ ๋ฐํ
}
4) ์ ๋ต์ ๋ง์ถ์ง ์์์ผ๋ฉด ๋ณผ / ์คํธ๋ผ์ดํฌ ๊ฐ์ ์๋ ค์ฃผ๊ณ ๋ค์ ์
๋ ฅ๋ฐ๊ธฐ & 3S์ผ ๋์๋ ์ ๋ต์ ๋ง์ท์์ ์๋ ค์ฃผ๊ณ ๊ฒ์์ ์ข
๋ฃํ๊ธฐ
์ด๊ฑด ํ ๋ฒ์ ์งํํ๋ค. ์๊น ๋ฐ์์จ int๊ฐ์ main method์ ๋ค๋ฅธ ๋ณ์์ ์ง์ด ๋ฃ๊ณ if ~ else if๋ฅผ ์ด์ฉํด์ ์ ๋ต์ด ์๋๋ฉด(strike != 3) ๋ณผ๊ณผ ์คํธ๋ผ์ดํฌ ๊ฐ์๋ฅผ ์๋ ค์ฃผ๊ณ ๋ค์ while๋ฌธ์ ๋ฐ๋ณตํ๊ณ , ์ ๋ต์ด๋ฉด (strike == 3) ์ ๋ต์ด๋ผ๊ณ ์๋ ค์ค ๋ค while๋ฌธ์ ์ข ๋ฃํ๋ค.
// ๋ณผ, ์คํธ๋ผ์ดํฌ ์ซ์ ๋ฐ๊ธฐ
int ball = ballCount(ansAry,inputAry);
int strike = strCount(ansAry, inputAry);
// ๋ณผ, ์คํธ๋ผ์ดํฌ ํ์ํ๊ณ 3 ์คํธ๋ผ์ดํฌ๊ฐ ์๋๋ฉด ์๋ ค์ฃผ๊ธฐ & ๊ณ์ ์งํ
if (strike != 3) {
System.out.println(ball+"B"+strike+"S");
} else if (strike == 3) { // 3 ์คํธ๋ผ์ดํฌ๋ฉด ์ ๋ต์์ ์๋ ค์ฃผ๊ณ ๊ฒ์ ์ข
๋ฃ
System.out.println("์ ๋ต์
๋๋ค!");
System.out.println("WIN!!");
break;
}
๊ทธ๋ ๊ฒ ์์ฑ๋ ์ฝ๋์ ์ฌ์ง
import java.lang.reflect.Array;
import java.util.*;
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
// 1. ๋๋ค์ซ์ ๋ง๋ค๊ธฐ
Random random = new Random();
Scanner sc = new Scanner(System.in);
int[] ansAry = new int[3];
// ์ธ ์๋ฆฌ ์ซ์๊ฐ ์๋ก ๋ค๋ฅธ์ง ํ์ธ
do {
// [0~9] ์ธ ์๋ฆฌ ์ซ์๊ฐ ๋ค ๋ค๋ฅผ ๋๊น์ง ์์ฑ
ansAry[0] = random.nextInt(10);
ansAry[1] = random.nextInt(10);
ansAry[2] = random.nextInt(10);
} while (ansAry[0] == ansAry[1] || ansAry[1] == ansAry[2] || ansAry[0] == ansAry[2]);
// ๋ต ํ์ธ ํ
์คํธ์ฉ
// System.out.println(Arrays.toString(ansAry));
System.out.println("์ผ๊ตฌ๊ฒ์ ์์ํฉ๋๋ค!");
int inputNum;
int inputAry[] = new int[3];
while (true) {
// ์ซ์ ์
๋ ฅ๋ฐ๊ธฐ
System.out.println("์ธ์๋ฆฌ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์(๊ฒ์์ ์ข
๋ฃํ๊ณ ์ถ์ผ๋ฉด 0์ ์
๋ ฅํด์ฃผ์ธ์)");
System.out.print(">> ");
inputNum = sc.nextInt();
if (inputNum == 0) {
System.out.println("๊ฒ์์ ์ข
๋ฃํฉ๋๋ค.");
break;
}
// ๋ฐฐ์ด์ ๋ฃ๊ธฐ
inputAry[0] = inputNum / 100;
inputAry[1] = (inputNum / 10) % 10;
inputAry[2] = inputNum % 10;
// ๋ฐฐ์ด์ ์ ๋ค์ด๊ฐ๋์ง ํ์ธ
// System.out.println(Arrays.toString(inputAry));
if (checkNum(inputAry)) {
System.out.println("Error: ์ค๋ณต ์ซ์๋ฅผ ์
๋ ฅํ์ต๋๋ค. ๊ฒ์์ ์ข
๋ฃํฉ๋๋ค.");
break;
}
// ๋ณผ, ์คํธ๋ผ์ดํฌ ์ซ์ ๋ฐ๊ธฐ
int ball = ballCount(ansAry,inputAry);
int strike = strCount(ansAry, inputAry);
// ๋ณผ, ์คํธ๋ผ์ดํฌ ํ์ํ๊ณ 3 ์คํธ๋ผ์ดํฌ์ผ ์ ๊ฒ์ ์ข
๋ฃ
if (strike != 3) {
System.out.println(ball+"B"+strike+"S");
} else if (strike == 3) {
System.out.println("์ ๋ต์
๋๋ค!");
System.out.println("WIN!!");
break;
}
}
}
// ๋ณผ ํ์ธ
static int ballCount(int[] ansAry, int[] inputAry) {
int ball = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i != j && ansAry[i] == inputAry[j]) {
ball++;
}
}
}
return ball;
}
// ์คํธ๋ผ์ดํฌ ํ์ธ
static int strCount(int[] ansAry, int[] inputAry) {
int strike = 0;
for (int i = 0; i < ansAry.length; i++) {
if (ansAry[i] == inputAry[i]) {
strike++;
}
}
return strike;
}
// ์ค๋ณต ๊ฐ ํ์ธํ๊ธฐ
static boolean checkNum(int[] inputAry) {
Set<Integer> set = new HashSet<>();
for (int num : inputAry) {
if (!set.add(num)) {
return true;
}
}
return false;
}
}
์์์ ๋ฟ๋ฏํด!!
<์ป์ด๊ฐ๋ ๊ฒ>
์๋ฌด๋๋ ํ๋์ฌ์ ๋ ๊ธธ๋ฌ์ผ ํ๊ณ ํผ์์ ๋ค ํด๋ฒ๋ฆฌ๋ ค๋ ์๋ง์ ๋ฒ๋ ค์ผ๊ฒ ๋ค. ๋ค์๋ถํฐ๋ ์ ์ด์ ๋ถ๋ด์ ํด์ ์ฝ๋๋ฅผ ์ง๊ณ ์๋๋ ๋ถ๋ถ์ ์๋ก ๋์์ ํ๋ ๊ฒ์ผ๋ก ์๊ฐํด์ผ๊ฒ ๋ค. ์จ๋ผ์ธ์ผ๋ก ์งํ๋๋ ๊ฒ์ด๋ผ ๋ ์์ ์ฌ๋์ด ์์ผ๋ ๋ ๊ทธ๋ฌ๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์๊พธ ๋๋ฌด ํฐ ์ฒ๋ง ๋ณด๋ ค๊ณ ํ๋ ๊ฒ๋ ๊ณ ์ณ์ผ ํ๋ค. ๋์์ ์๋ ๊ฑธ ์ผ๋จ ์ฒ๋ฆฌํ ๋ค์์ ๋์ด๊ฐ์ ์ค๋ฅ ๋๋ฉด ๋ค์ ๋์์ค๊ณ ๊ทธ๋์ผ ํ๋๋ฐ ์ฒ์๋ถํฐ ๋๋ฌด ์๋ฒฝํ๊ฒ ํ๋ ค๋ค ๋ณด๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๊ทธ๋๋ ์ธํ
๋ฆฌ์ ์ด ๋ค๋ฃจ๋ ๋ฒ๊ณผ ๊ฒ์ ๋ฅ๋ ฅ์ด ๋ง์ด ๋์๋ค^^...
์๋ฐ ์ค๋ ฅ๋... ๋ง์ด ์ฑ์ฅํ ๊ฒ ๋ง๊ฒ ์ง?