Blue___
코딩배우는 학생🌎
Blue___
전체 방문자
오늘
어제
  • 코딩배우는 학생🧀 (242)
    • Algorithms (145)
      • BOJ[Java] (107)
      • Programmers[Java] (32)
      • Coding_Contest (3)
    • Web (22)
      • .NET Core C# (2)
      • Java (1)
      • Oracle SQL (7)
      • Web-ProJect (3)
      • Error처리 (1)
      • Web지식 (4)
      • Javascript (1)
      • Vue (3)
    • Git (4)
    • Java_beginner(Repl.it) (55)
      • Auto-Graded-Course(AP CS A) (54)
    • 프로젝트 직딩일기 (3)
    • Hanyang_Assignment (0)
    • 이모저모 (4)
      • 잡담 (1)
      • 2021 오픈소스 컨트리뷰터 아카데미 (1)
      • DDD - 6기! (1)
    • 북리뷰 (1)
      • 리팩토링 2판 (1)
      • 클린코드 (0)

블로그 메뉴

  • 🐰GITHUB
  • ☘️포트폴리오
  • 🌸MBC개발_투표 2022
  • 🍭MBC_APP

공지사항

인기 글

태그

  • 프로그래밍
  • 백준
  • 프로그래머스
  • coding
  • auto-graded course
  • 코딩배우는 학생
  • 코딩
  • 코딩배우는학생
  • REPL
  • 레플릿
  • algorithm
  • repl.it
  • 자바
  • Java
  • programmers
  • java basic
  • Bakjoon
  • Java tutorial
  • 알고리즘
  • AP CS A

최근 댓글

최근 글

티스토리

hELLO
Blue___

코딩배우는 학생🌎

[Programmers]  하샤드 수 [Java]
Algorithms/Programmers[Java]

[Programmers] 하샤드 수 [Java]

2019. 11. 26. 23:35

문제 설명

 

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

 

제한 조건

  • x는 1 이상, 10000 이하인 정수입니다.

입출력 예

 

입출력 예 #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) {
     	int x_x =x;
    	   	boolean answer = false;    	   
    	   	int a = (int)Math.pow(10,(int) Math.log10(x));    	   	
    	   	int sum =0;
    	   	int [] arr = new int [a];
    	    for(int i=0;i<a;i++) {
    	    	arr[i]=x%10;
    	    	x=(int)x/10;    	    	
    	    }   
    	    for(int j=0;j<a;j++) {
    	    	sum+=arr[j];
    	    }
    	    if(x_x%sum==0) {
    	    	answer=true;
    	    }
    	    return answer;
    }
}

x_x변수를 선언하고 입력받는 x값을 저장해둔다.  그리고 x의 자리수를 Math.pow와 Math.log를 통해서 표현해보았다. 정수값 a가 x의 length값이 되고 이를 arr배열의 길이로 선언해주었다. 

 

for문을 통해 arr[i]에 x의 각 자리수를 넣어주고 배열 값들의 합을 sum으로 넣어준다. 마지막으로 x의 초기값인   x_x와 sum의 나머지가 0이 된다면 answer= true가 return 되고 아니라면 기본값으로 설정한 false가 return된다.ㅇㅅㅇ

반응형
저작자표시 (새창열림)

'Algorithms > Programmers[Java]' 카테고리의 다른 글

[ Programmers] 핸드폰 번호 가리기[Java]  (0) 2019.11.27
[Programmers] 2016년 [Java]  (0) 2019.11.27
[Programmers] 예산(서머코딩/윈터코딩/2018) [Java]  (0) 2019.11.26
[Programmers] 문자열 내 p와 y의 개수[Java]  (0) 2019.11.26
[Programmers]제일 작은 수 제거하기[Java]  (0) 2019.11.26
    'Algorithms/Programmers[Java]' 카테고리의 다른 글
    • [ Programmers] 핸드폰 번호 가리기[Java]
    • [Programmers] 2016년 [Java]
    • [Programmers] 예산(서머코딩/윈터코딩/2018) [Java]
    • [Programmers] 문자열 내 p와 y의 개수[Java]
    Blue___
    Blue___
    완전 연소한 불은 재를 남기지않는다 : 코딩배우는학생 🌎

    티스토리툴바