๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

ํ•˜์ƒค๋“œ ์ˆ˜

by carrot0911 2024. 11. 8.

๋ฌธ์ œ ์„ค๋ช…

์–‘์˜ ์ •์ˆ˜ x๊ฐ€ ํ•˜์ƒค๋“œ ์ˆ˜์ด๋ ค๋ฉด x์˜ ์ž๋ฆฟ์ˆ˜์˜ ํ•ฉ์œผ๋กœ x๊ฐ€ ๋‚˜๋ˆ„์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 18์˜ ์ž๋ฆฟ์ˆ˜ ํ•ฉ์€ 1+8=9์ด๊ณ , 18์€ 9๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฏ€๋กœ 18์€ ํ•˜์ƒค๋“œ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž์—ฐ์ˆ˜ x๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ x๊ฐ€ ํ•˜์ƒค๋“œ ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

https://school.programmers.co.kr/learn/courses/30/lessons/12947

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์ œํ•œ ์‚ฌํ•ญ

  • x๋Š” 1 ์ด์ƒ, 10,000 ์ดํ•˜์ธ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

x return
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์€ ํ•˜์ƒค๋“œ ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

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

์ฝ”๋“œ ์„ค๋ช…

  • int sum = 0, int original = x
    • ๋ณ€์ˆ˜ sum๊ณผ original์— ๊ฐ๊ฐ ๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค.
    • x ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๊ฒƒ์„ ๋Œ€๋น„ํ•ด์„œ original์— x๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค.
  • while (x > 0) { } : ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ •ํ•ด์ง„ ๋ฒ”์œ„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— while๋ฌธ์ด ๋” ์ ์ ˆํ•˜๋‹ค.
    • sum = sum + (x % 10) : sum์— ๊ฐ ์ž๋ฆฌ ์ˆ˜๋ฅผ ๋”ํ•ด์„œ ์ €์žฅํ•œ๋‹ค.
    • x = x / 10 : ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋ฌธ์ด ๋Œ์•„๊ฐˆ ๋•Œ๋งˆ๋‹ค 10์”ฉ ๋‚˜๋ˆ ์ค€๋‹ค.
  • if (original % sum ==0) : sum ๊ฐ’์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์งˆ ๊ฒฝ์šฐ ํ•˜์ƒค๋“œ ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— answer ๋ณ€์ˆ˜์— true๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
  • else : sum ๊ฐ’์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ•˜์ƒค๋“œ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— answer ๋ณ€์ˆ˜์— false๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.