Algorithm

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] [Level 1] ν•˜μƒ€λ“œ 수 JAVA

seulye 2022. 5. 12. 21:31

 

문제 μ„€λͺ…

 

μ–‘μ˜ μ •μˆ˜ xκ°€ ν•˜μƒ€λ“œ 수이렀면 x의 자릿수의 ν•©μœΌλ‘œ xκ°€ λ‚˜λˆ„μ–΄μ Έμ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 18의 자릿수 합은 1+8=9이고, 18은 9둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λ―€λ‘œ 18은 ν•˜μƒ€λ“œ μˆ˜μž…λ‹ˆλ‹€. μžμ—°μˆ˜ xλ₯Ό μž…λ ₯λ°›μ•„ xκ°€ ν•˜μƒ€λ“œ μˆ˜μΈμ§€ μ•„λ‹Œμ§€ κ²€μ‚¬ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄μ£Όμ„Έμš”.

μ œν•œ 쑰건
  • xλŠ” 1 이상, 10000 μ΄ν•˜μΈ μ •μˆ˜μž…λ‹ˆλ‹€.
μž…μΆœλ ₯ 예arrreturn
10 true
12 true
11 false
13 false
μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1
10의 λͺ¨λ“  자릿수의 합은 1μž…λ‹ˆλ‹€. 10은 1둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λ―€λ‘œ 10은 ν•˜μƒ€λ“œ μˆ˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2
12의 λͺ¨λ“  자릿수의 합은 3μž…λ‹ˆλ‹€. 12λŠ” 3으둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λ―€λ‘œ 12λŠ” ν•˜μƒ€λ“œ μˆ˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #3
11의 λͺ¨λ“  자릿수의 합은 2μž…λ‹ˆλ‹€. 11은 2둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€μ§€ μ•ŠμœΌλ―€λ‘œ 11λŠ” ν•˜μƒ€λ“œ μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #4
13의 λͺ¨λ“  자릿수의 합은 4μž…λ‹ˆλ‹€. 13은 4둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€μ§€ μ•ŠμœΌλ―€λ‘œ 13은 ν•˜μƒ€λ“œ μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

 

 

풀이
import java.util.*;

class Solution {
    public boolean solution(int x) {
        int sum = 0;
        int x1 = x;
        boolean answer = true;
        while (x1>10){
            sum += x1 % 10;
            x1 = x1/10;
        }
        sum+=x1;
        
        if (x % sum == 0){
            answer=true;
        }
        else {
            answer=false;
        }
        return answer;
    }
}

 

μ°Έκ³ 

이 문제의 핡심은 자릿수 λͺ¨λ‘ λ”ν•˜κΈ°. μ²˜μŒμ—λŠ” κ·Έλƒ₯ μ € 숫자λ₯Ό μžλ¦Ώμˆ˜λŒ€λ‘œ μͺΌκ°œμ„œ λ”ν•΄μ•Όν•˜λ‚˜ λΌλŠ” 바보같은 생각을 ν–ˆμ—ˆλŠ”λ°.. μ €λŸ° 방법이 μžˆμ—ˆλ‹€!

0으둜 계속 λ‚˜λˆ„λ©΄μ„œ λ‚˜λ¨Έμ§€λ₯Ό 계속 더해주기.

ex) 230인 κ²½μš°μ— 230%10=0, 230/10=23, sum=0

23%10=3, 23/10=2, sum=0+3=3

μ—¬κΈ°κΉŒμ§€ μ™”λŠ”λ°, 2λ₯Ό λ”ν•΄μ€˜μ•Όν•  κ±° μ•„λ‹Œκ°€..!

κ·Έλž˜μ„œ while문을 λͺ¨λ‘ 끝마친 후에, λ§ˆμ§€λ§‰ λͺ«λ„ 더해쀀닀.