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

2024.12.16 - [Java Algorithm Coding Test] - [Java] ํŒฉํ† ๋ฆฌ์–ผ ๊ฐœ๋…๊ณผ ์ฝ”๋“œ๋กœ ํ’€์–ด๋‚ด๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•

 

[Java] ํŒฉํ† ๋ฆฌ์–ผ ๊ฐœ๋…๊ณผ ์ฝ”๋“œ๋กœ ํ’€์–ด๋‚ด๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•

์ผ์ •ํ•œ ๋ฒ”์œ„(1์”ฉ ์ž‘์•„์ง€๋Š” ๊ทœ์น™)๋กœ ๋‚˜์—ด๋œ ์ˆ˜์˜ ๋ฐฐ์—ด์— ๊ฐ™์€ ํ–‰๋™(๊ณฑํ•˜๊ธฐ)์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. 1. ๋ฐ˜๋ณต๋ฌธ๋ฐ˜๋ณต์„ ํ•  ๋•Œ๋Š” ํŠนํžˆ ํ•˜๋‚˜์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ™์€ ํ–‰๋™์„ ํ•  ๋•Œ for๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค!for๋ฌธ์„

yeonbikim.tistory.com

2024.12.17 - [Java Algorithm Coding Test] - [Java] ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ์ฃผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM)์„ ๊ตฌํ•˜๋Š” ์œ ํ˜•์— ์“ฐ์ธ๋‹ค.

 

[Java] ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ์ฃผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM)์„ ๊ตฌํ•˜๋Š” ์œ ํ˜•์— ์“ฐ์ธ๋‹ค.

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ํฐ ์ˆ˜๋ฅผ ์ž‘์€ ์ˆ˜๋กœ ๋‚˜๋ˆ„๊ณ , ๊ทธ ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์† ๋‚˜๋ˆ„์–ด ๋‚˜๊ฐ€๋ฉด์„œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋  ๋•Œ์˜ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.์ด๊ฑธ ๋ฐ˜๋ณตํ•ด์„œ ๊ณ„์‚ฐํ•˜๋ฉด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌํ• 

yeonbikim.tistory.com

 

+ Recent posts