티스토리 뷰

반응형


Using Language : Java

Using Tool : IntelliJ


  • 프로그래머스 문제 소개

<하샤드 수>

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다.
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
자연수 n을 입력받아 n이 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

예시

arr    return
10    true
12    true
11    false
13    false

의사코드

  1. int 형을 string문자열로 변환해준다. ( 각 자릿수를 합하기 위해)
  2. 각 자릿수의 합을 구해준다
  3. 합으로 주어진 숫자를 나누어준다.

코드 작성 및 테스트 결과

int형에서 string형으로 변환하는 함수를 찾는데 시간이 좀 걸렸으나 나머지 과정은
무난히 패스. 이제 1단계를 졸업한 날이 온 것 같다.
다음 포스팅 부터는 2단계 문제로~!


<Solution10.java> , <Solution10Test.java>


package level1;

public class Solution10 {
    /*
    * 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다.
    * 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.
    * 자연수 n을 입력받아 n이 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
    *
    *   arr        return
        10        true
        12        true
        11        false
        13        false

        1. int 형을 string 문자열로 변환
        2. 각 자릿수의 합을 구하기
        3. 합으로 주어진 숫자를 나누어준다.
    */

    public boolean solution(int x) {
        int sum = 0;
        boolean answer = true;

        String num = String.valueOf(x);
        int len = num.length();

        sum = getSum(sum, num, len);

        return isAnswer(x, sum, answer);
    }

    private boolean isAnswer(int x, int sum, boolean answer) {
        if (x % sum == 0) {
            return answer;
        }
        else {
            answer = false;
            return answer;
        }
    }

    private int getSum(int sum, String num, int len) {
        for (int i = 0; i < len; i++) {
            sum += Integer.parseInt(num.substring(i,i+1));
        }
        return sum;
    }
}

package level1;
import org.junit.Test;
import static org.junit.Assert.*;

public class Solution10Test {

    @Test
    public void solution() {
        Solution10 s = new Solution10();

        assertTrue("true",s.solution(10));
        assertTrue("true",s.solution(12));
        assertFalse("false",s.solution(11));
        assertFalse("false",s.solution(13));
    }
}


github에서 문제 확인하기


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함