
1. ๋ฌธ์
- ์ฌ๊ท๋ฅผ ์ฌ์ฉํด์ ์๋์ ์กฐ๊ฑด์ ๋ถํฉํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
- ์ฃผ์ด์ง ์ซ์์ ๊ฐ ์๋ฆฟ์์ ํฉ์ ๊ณ์ฐํ๋ ์ฝ๋๋ฅผ ์์ฑํด ์ฃผ์ธ์
- ex) 1234 → 1 + 2 + 3 + 4 → 10
- ex2) 1 → 1 → 1\
- ๋ณ๋์ ๋ฉ์๋๋ฅผ ๊ตฌํํ ํ์๋ ์์ผ๋ฉด solution ๋ฉ์๋์ ๋ํ ์ฌ๊ท๋ง์ ์ฌ์ฉํด์ ํ์ด์ฃผ์ธ์
2. ์ฌ๊ท ๊ฐ๋
์ฌ๊ท๋ ํจ์๊ฐ ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค.
ํน์ ์กฐ๊ฑด์์ ์๊ธฐ ์์ ์ ๊ณ์ ํธ์ถํ๋ค๊ฐ, ์ข ๋ฃ ์กฐ๊ฑด(Base Case)์ ๋ง๋๋ฉด ๋ ์ด์ ํธ์ถํ์ง ์๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ฉฐ ํธ์ถ ์คํ์ ์ญ์์ผ๋ก ์ ๋ฆฌํด ๋๊ฐ๋ ๋ฐฉ์์ด๋ค.
์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ :
1. ๋ฌธ์ ๋ฅผ ๋ ์์ ํ์ ๋ฌธ์ ๋ก ์ชผ๊ฐค ์ ์์ ๋.
2. ํ์ ๋ฌธ์ ์ ํ์ด๊ฐ ๋์ผํ ๋ ผ๋ฆฌ๋ก ์ฒ๋ฆฌ๋ ์ ์์ ๋.
์๋ฅผ ๋ค์ด, ์ซ์ 1234์ ์๋ฆฟ์ ํฉ์ ๊ตฌํ ๋:
๋งจ ๋์ง๋ฆฌ ์ซ์ 4์ ๋๋จธ์ง ์ซ์ 123์ ํฉ์ผ๋ก ๋ฌธ์ ๋ฅผ ๋ถํ .
์ซ์ 123์ ๋ค์ 3๊ณผ 12๋ก ๋ถํ .
์ด๋ ๊ฒ ๊ณ์ ๋๋ ์ 1์ด ๋จ์ ๋ ์ข ๋ฃ
public class Assignment02 {
public static void main(String[] args) {
int tc1 = 1324;
int tc2 = 1118;
int tc3 = 1;
int tc4 = 123456789;
System.out.println(solution(tc1)); // 10
System.out.println(solution(tc2)); // 11
System.out.println(solution(tc3)); // 1
System.out.println(solution(tc4)); // 45
}
public static int solution(int num) {
//์ข
๋ฃ ์กฐ๊ฑด : ์ซ์๊ฐ ํ ์๋ฆฌ์์ด๋ฉด ๊ทธ๋๋ก ๋ฐํ
if (num < 10) {
return num;
}
// ์ฌ๊ท ํธ์ถ : ๋ง์ง๋ง ์๋ฆฌ ์ซ์(num % 10)๋ฅผ ๋ํ๊ณ ๋๋จธ์ง ์ซ์(num / 10)์ ๋ํด solution ํธ์ถ
return (num % 10) + solution(num/10)
}
}
return (num % 10) + solution(num / 10);๊ฐ ๋์ ํด์ ๋ํด์ง๋ ์ด์ :
์ฌ๊ท ํธ์ถ์ ๋์ ๋ฐฉ์๊ณผ ๊ด๋ จ์ด ์๋ค.
์ด ๋์์ ํจ์ ํธ์ถ์ด ์์ด๋ ํธ์ถ ์คํ(Call Stack)์ ํตํด ์ด๋ฃจ์ด์ง๋ค.
์ฌ๊ท๋ ์์ ์ ํธ์ถํ๋ฉด์ ๊ณ์ฐ์ ์ผ๋ถ๋ฅผ ์คํ์ ๋จ๊ธฐ๊ณ ,
๋ชจ๋ ํธ์ถ์ด ์ข ๋ฃ๋๋ฉด ์คํ์ ๋ฐ๋ผ ์ฌ๋ผ์ค๋ฉด์ ๊ฒฐ๊ณผ๋ฅผ ์ฐจ๋ก๋๋ก ๊ณ์ฐํ๋ค.
1. ํจ์์ ์ญํ :
return (num % 10) + solution(num / 10);
num % 10์ ํ์ฌ ์ซ์์ ๋ง์ง๋ง ์๋ฆฌ๋ฅผ ์ถ์ถํ๋ค.
solution(num / 10)์ ๋๋จธ์ง ์ซ์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ๋ค.
์ฆ, solutionํจ์๋ ํ์ฌ ์์์ ์ซ์๋ฅผ ๋ฐํํ๊ณ , ๋๋จธ์ง ์๋ฆฌ์ ์ซ์ ํฉ์ ๋ค์ ์๊ธฐ ์์ ์ ํธ์ถํด์ ๊ณ์ฐํ๋๋ก ๊ตฌ์ฑ๋์๋ค.
์คํ ๊ณผ์
์ฒซ ํธ์ถ: solution(1324)
• ๊ณ์ฐ: (1324 % 10) + solution(1324 / 10)
• 1324 % 10 = 4
• solution(1324 / 10) → solution(132)
๋๊ธฐ ์ํ :4 + solution(132)
๋ ๋ฒ์งธ ํธ์ถ: solution(132)
• ๊ณ์ฐ: (132 % 10) + solution(132 / 10)
• 132 % 10 = 2
• solution(132 / 10) → solution(13)
• ๋๊ธฐ ์ํ: 2 + solution(13)
์ธ ๋ฒ์งธ ํธ์ถ: solution(13)
• ๊ณ์ฐ: (13 % 10) + solution(13 / 10)
• 13 % 10 = 3
• solution(13 / 10) → solution(1)
• ๋๊ธฐ ์ํ: 3 + solution(1)
๋ค ๋ฒ์งธ ํธ์ถ: solution(1)
• ์ข ๋ฃ ์กฐ๊ฑด: num < 10์ด๋ฏ๋ก return 1.
ํธ์ถ ์คํ๊ณผ ๊ณ์ฐ ์์
์ด์ ์คํ์ ๋ฐ๋ผ ์ฌ๋ผ๊ฐ๋ฉด์ ๊ฐ ํธ์ถ์์ ๊ณ์ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
1. solution(1) ๋ฐํ๊ฐ: 1
• ์ด์ ํธ์ถ๋ก ๋์๊ฐ (solution(13)์ ๋๊ธฐ ์ํ).
• 3 + 1 = 4
2. solution(13) ๋ฐํ๊ฐ: 4
• ์ด์ ํธ์ถ๋ก ๋์๊ฐ (solution(132)์ ๋๊ธฐ ์ํ).
• 2 + 4 = 6
3. solution(132) ๋ฐํ๊ฐ: 6
• ์ด์ ํธ์ถ๋ก ๋์๊ฐ (solution(1324)์ ๋๊ธฐ ์ํ).
• 4 + 6 = 10
4. solution(1324) ๋ฐํ๊ฐ: 10
• ์ต์ข ๊ฒฐ๊ณผ.
์ ๋์ ํด์ ๋ํด์ง๋๊ฐ?
์ฌ๊ท๋ ๊ณ์ฐ์ ์คํ์ ์์๋๊ณ ๋ง์ง๋ง ํธ์ถ๋ถํฐ ์ฐจ๋ก๋ก ๊ณ์ฐ์ ์๋ฃํ๋ค.
• ๊ฐ ํธ์ถ์ ์์ ์ ํ์ฌ ์๋ฆฌ์๋ฅผ ๊ณ์ฐํ๊ณ , ๋ค์ ์๋ฆฌ์์ ํฉ์ ๊ณ์ฐํ๋๋ก ์์ ์ ํธ์ถํ๋ค.
• ๋ชจ๋ ํธ์ถ์ด ์ข ๋ฃ๋๋ฉด ๊ฒฐ๊ณผ๊ฐ ์คํ์์ ์ฐจ๋ก๋ก ๋ฐํ๋์ด ํฉ์ฐ๋๋ค.
ํธ์ถ ์คํ์ด ์์ด๋ ์ํ :
1. solution(1324): ๊ณ์ฐ ์ค๋จ → 4 + solution(132)
2. solution(132): ๊ณ์ฐ ์ค๋จ → 2 + solution(13)
3. solution(13): ๊ณ์ฐ ์ค๋จ → 3 + solution(1)
4. solution(1): ์ข
๋ฃ ์กฐ๊ฑด → ๋ฐํ 1
๋ฐํ๊ณผ์ :
1. solution(1) → 1
2. solution(13) → 3 + 1 = 4
3. solution(132) → 2 + 4 = 6
4. solution(1324) → 4 + 6 = 10
ํต์ฌ ์์ฝ
1. solution(num / 10)์ ๋ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ์๊ธฐ ์์ ์ ํธ์ถํ๋ค.
2. ๋ชจ๋ ํธ์ถ์ด ์ข ๋ฃ๋ ๋ค, ์คํ์ ์ ์ฅ๋ ๊ณ์ฐ๋ค์ด ์ญ์์ผ๋ก ํ๋ฆฌ๋ฉฐ ์ต์ข ํฉ์ด ๊ณ์ฐ๋๋ค.
3. ์ฌ๊ท๋ ๊ฐ ํธ์ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐจ๋ก๋๋ก ๋์ ํ๋ ๊ตฌ์กฐ ๋๋ถ์ ๋ฐ๋ณต๋ฌธ ์์ด๋ ํฉ์ฐ์ ๊ตฌํํ ์ ์๋ค.
2024.12.16 - [Java Algorithm Coding Test] - [Java] ์ฌ๊ท ํจ์์ ์คํ(Stack)์ ๊ฐ๋
[Java] ์ฌ๊ท ํจ์์ ์คํ(Stack)์ ๊ฐ๋
์ฌ๊ทํจ์๋ฅผ ์ธ์ ์จ์ผ ํ๋์ง๊ฐ ์ค์ํ๋ฐ, ๋๊ฐ์ ๋์์ ์ผ์ ํ ๊ท์น๊ณผ ๊ฐ๊ฒฉ์ ๊ฐ์ง ์๋ค์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ๋๋ค.์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ข ๋ฃ ์กฐ๊ฑด์ ์ค์ ํด์ ์ด๋์ ๋ฉ์ถ์ง
yeonbikim.tistory.com
[Java] ํฉํ ๋ฆฌ์ผ ๊ฐ๋ ๊ณผ ์ฝ๋๋ก ํ์ด๋ด๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ
์ผ์ ํ ๋ฒ์(1์ฉ ์์์ง๋ ๊ท์น)๋ก ๋์ด๋ ์์ ๋ฐฐ์ด์ ๊ฐ์ ํ๋(๊ณฑํ๊ธฐ)์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค. 1. ๋ฐ๋ณต๋ฌธ๋ฐ๋ณต์ ํ ๋๋ ํนํ ํ๋์ฉ ์์ฐจ์ ์ผ๋ก ๊ฐ์ ํ๋์ ํ ๋ for๋ฌธ์ ์ฌ์ฉํ๋ค!for๋ฌธ์
yeonbikim.tistory.com
[Java] ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฃผ๋ก ์ต๋๊ณต์ฝ์(GCD)์ ์ต์๊ณต๋ฐฐ์(LCM)์ ๊ตฌํ๋ ์ ํ์ ์ฐ์ธ๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ํฐ ์๋ฅผ ์์ ์๋ก ๋๋๊ณ , ๊ทธ ๋๋จธ์ง๋ฅผ ๊ณ์ ๋๋์ด ๋๊ฐ๋ฉด์ ๋๋จธ์ง๊ฐ 0์ด ๋ ๋์ ์๊ฐ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ ๋ฐฉ๋ฒ์ด๋ค.์ด๊ฑธ ๋ฐ๋ณตํด์ ๊ณ์ฐํ๋ฉด ์ต๋๊ณต์ฝ์๋ฅผ ๋น ๋ฅด๊ฒ ๊ตฌํ
yeonbikim.tistory.com