on
[Programmers] Java 프로그래머스 레벨1 하샤드 수 문제 풀이
[Programmers] Java 프로그래머스 레벨1 하샤드 수 문제 풀이
문제
하샤드 수(harshad number)는 주어진 진법 에서 수의 각 자릿수 숫자의 합으로 나눠떨어지는 자연수 를 말한다. 인도 의 수학자 카프리카가 정의했으며, '기쁨을 준다'는 뜻의 산스크리트어 단어인 harshad에서 유래했다.
(출처 : 꺼무위키)
문제
하샤드 수 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 arr 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은 하샤드 수가 아닙니다.
하샤드 수를 구하는 알고리즘을 짜는 문제!
하샤드 수는 위에 나와있는대로 각 자릿수의 숫자의 합으로 나누어떨어지는 자연수를 말한다.
입출력 예 #1를 예로든다면, 10이라는 숫자가 주어졌을 때
10 -> 1+0 -> 1 > 1로 10을 나눴을 때 나누어 떨어지는가? 를 보면 되는 것이다.
그래서, 문제는 파라미터로 넘어온 숫자가 하샤드 수의 조건을 충족하는지
boolean값으로 반환하면 되는 것이다.
아래는 해답
package list; public class Programmers_HarshadNumber { public static boolean solution(int n) { // 결과를 반환할 answer 선언 boolean answer = true; // 하샤드 수인지 확인할 파라미터 변수 int harshadNum = 0; // 파라미터로 넘어온 n값을 배열로 생성해주기 위한 사전 작업(?) String param = Integer.toString(n); // 파라미터로 넘어온 n값을 더해주기 위해 배열을 생성해준다 String[] parseArr = param.split(""); // 반복문 실행 for (int i = 0; i < parseArr.length; i++) { // 하샤드수에 파라미터를 더해준다 harshadNum += Integer.parseInt(parseArr[i]); } // 파라미터(n)와 파라미터를 나눈수가 나누어 떨어진다면 하샤드 수 if (n % harshadNum != 0) { answer = false; } // 결과 리턴 return answer; } public static void main(String[] args) { // 파라미터 // boolean result = solution(10); // true boolean result = solution(11); // false // 솔루션 값 출력 System.out.print(result); } }
흐ㅜㄱ흑... 연휴가 끝이났다..
그래도 10월에도 임시공휴일이 이틀이나 있으니.. 좀만 힘내자
으쌰으쌰
from http://heonil.tistory.com/211 by ccl(A) rewrite - 2021-09-23 22:01:10