
์ผ์ ํ ๋ฒ์(1์ฉ ์์์ง๋ ๊ท์น)๋ก ๋์ด๋ ์์ ๋ฐฐ์ด์ ๊ฐ์ ํ๋(๊ณฑํ๊ธฐ)์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค.
1. ๋ฐ๋ณต๋ฌธ
๋ฐ๋ณต์ ํ ๋๋ ํนํ ํ๋์ฉ ์์ฐจ์ ์ผ๋ก ๊ฐ์ ํ๋์ ํ ๋ for๋ฌธ์ ์ฌ์ฉํ๋ค!
for๋ฌธ์ ํตํด result ๊ฐ์ result * i๋ก ํํํจ์ผ๋ก์จ ๊ณฑํ๊ธฐ๋ฅผ ๋์ ์ํฌ ์ ์๋ค.
2. ์ฌ๊ทํจ์ - ์ค์ค๋ก ํธ์ถํ๋ ๋ฐฉ์
if๋ฌธ์ผ๋ก ์ข ๋ฃ ์กฐ๊ฑด์ ๊ฑธ์ด๋ ํ, ํจ์ ๋ด๋ถ์์ ๋์ผํ ํจ์(์๊ธฐ ์์ )๋ฅผ ๋ค์ ํธ์ถํด์ ์ผ์ ์ํจ๋ค.
์ฆ, ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋๋ ๋ฐฉ์์ด๋ค.
์! ํฉํ ๋ฆฌ์ผ์ ์คํ์ ๋ ์ดํ๋ก ์ฒ์ ์ ํ๋ ๊ฒ ๊ฐ์๋ฐ!
1. ํฉํ ๋ฆฌ์ผ์ด๋ ๋ฌด์์ธ๊ฐ?
ํฉํ ๋ฆฌ์ผ์ ์ด๋ค ์ซ์์์ 1๊น์ง์ ๋ชจ๋ ์ซ์๋ฅผ ๊ณฑํ ๊ฐ์ ๋ปํ๋ค.
์ฝ๊ฒ ๋งํด, “์ซ์๋ค์ด ์ค์ง์ด ์์ ๋ชจ๋ ์ฐจ๋ก๋ก ๊ณฑํ๋ค!” ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
• ์๋ฅผ ๋ค์ด, 4์ ํฉํ ๋ฆฌ์ผ์ ์ด๋ ๊ฒ ๊ณ์ฐํ๋ค:
4! = 4 * 3 * 2 *1 = 24
2. ํฉํ ๋ฆฌ์ผ์ ๊ท์น
• 1์ ํฉํ ๋ฆฌ์ผ์ ํญ์ 1. (1! = 1)
• 0์ ํฉํ ๋ฆฌ์ผ๋ 1. (0! = 1)
์ด๊ฑด ์ฝ์๋ ๊ท์น์ด๋ค.
3. ๊ทธ๋ผ ํฉํ ๋ฆฌ์ผ ๊ณ์ฐ์ ์ด๋ป๊ฒ ์ฝ๋๋ก ์งค๊น?
3.1 ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ณ์ฐํ๊ธฐ
public class Factorial {
public static void main(String[] args) {
int number = 5 // ํฉํ ๋ฆฌ์ผ์ ๊ณ์ฐํ ์ซ์
int result = 1; // ๊ฒฐ๊ณผ๊ฐ ์ด๊ธฐํ
// 1๋ถํฐ number๊น์ง ์ฐจ๋ก๋ก ๊ณฑํ๊ธฐ
for (int i = 1; i <= number; i++) {
result = result * i; // result์ ๊ณ์ i๋ฅผ ๊ณฑํ๊ธฐ
}
System.out.println(number + "! = " + result);
}
}
1) result๋ ์ฒ์์ 1.
2) i๊ฐ 1๋ถํฐ 5๊น์ง ๋ฐ๋ณต๋๋ค.
• ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต: result = 1 * 1
• ๋ ๋ฒ์งธ ๋ฐ๋ณต: result = 1 * 2
• ์ธ ๋ฒ์งธ ๋ฐ๋ณต: result = 2 * 3
• ๋ค ๋ฒ์งธ ๋ฐ๋ณต: result = 6 * 4
• ๋ค์ฏ ๋ฒ์งธ ๋ฐ๋ณต: result = 24 * 5 = 120
3. ๋ง์ง๋ง์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์: “5! = 120”
3.2 ์ฌ๊ทํจ์๋ก ๊ณ์ฐํ๊ธฐ - ์ค์ค๋ก๋ฅผ ํธ์ถํ๋ ๋ฐฉ์.

public class Factorial {
// ํฉํ ๋ฆฌ์ผ์ ๊ณ์ฐํ๋ ์ฌ๊ท ํจ์
public static int factorial(int n) {
if (n == 0 | n == 1) { // ์ข
๋ฃ ์กฐ๊ฑด: 0!๊ณผ 1!์ 1
return 1;
}
return n * factorial(n - 1); // ์๊ธฐ ์์ ์ ํธ์ถ
}
public static void mai(String[] args) {
int number = 5;
System.out.println(number + "! = " + factorial(number));
}
}
์ฌ๊ท๋ ํจ์๊ฐ "์ค์ค๋ก๋ฅผ ํธ์ถ"ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํฉํ ๋ฆฌ์ผ์ ์ฌ๊ท๋ก ํ๊ธฐ ์์ฃผ ์ข๋ค.
์ฌ๊ท์ ์๋ฆฌ :
• ํฉํ ๋ฆฌ์ผ n! = n \times (n-1)!
๋ค์ ๋งํด, ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋๋ ๊ฒ์ด๋ค.
• ์๋ฅผ ๋ค์ด: 5! = 5* 4! , 4! = 4 *3! , …
• ๊ณ์ ๋๋๋ค๊ฐ 1! = 1 ์์ ๋ฉ์ถ๋ค.
์ฌ๊ท๋ ์ข ๋ฃ์กฐ๊ฑด์ ๋ฃ๋๊ฒ ๋งค์ฐ ์ค์ํ๋ค.
์๊ธฐ ์์ ์ ํธ์ถํ๋ ์ฝ๋ ์์ ์ข ๋ฃ ์กฐ๊ฑด์ ๋ฃ์ด์ ๋ฌดํ๋ฃจํ ๋๋ ๊ฒ์ ๋ฐฉ์งํด์ผ ํ๋ค.
์ฌ๊ท ํจ์์ ๋์ ๊ณผ์
5! ์ ๊ณ์ฐํ๋ค๊ณ ํ๋ฉด:
1. factorial(5) ํธ์ถ → 5 * factorial(4)
2. factorial(4) ํธ์ถ → 4 * factorial(3)
3. factorial(3) ํธ์ถ → 3 * factorial(2)
4. factorial(2) ํธ์ถ → 2 * factorial(1)
5. factorial(1) ์ ์ข ๋ฃ ์กฐ๊ฑด์ด๋๊น 1์ ๋ฐํ.
6. ์ด์ ๊ณ์ฐ์ด ์ญ์์ผ๋ก ๋์๊ฐ๋ค: - ์คํ์ ์๋ฃ๊ตฌ์กฐ๋ก ์ธํ์ฌ.
• 2 * 1 = 2
• 3 * 2 = 6
• 4 * 6 = 24
• 5 * 24 = 120
'๐ฐ๐ท ํ๊ตญ์ด (Korean) > Java Algorithm Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ํผ์ ๋๋ ๋จน๊ธฐ(1)_ ์ฌ๋ฆผ ๊ณ์ฐ (1) | 2024.12.17 |
|---|---|
| [Java] ์ฌ๊ท ํจ์์ ์คํ(Stack)์ ๊ฐ๋ (0) | 2024.12.16 |
| [Java] ์ฝ์ ์ ๋ ฌ(Insertion Sort) ์๋ฆฌ ์ดํดํ๊ธฐ (0) | 2024.12.16 |
| [Java] ๋ฐฐ์ด์ ์ ์ฌ๋ (HashSet๊ณผ HashMap์ ์ฐจ์ด) (1) | 2024.12.14 |
| [Java] ๋ฐฐ์ด ์๋ฅด๊ธฐ (๋ฐฐ์ด์ ํญ์ ์ธ๋ฑ์ค 0๋ถํฐ ์์๋๋ค.) (0) | 2024.12.08 |