[프로그래머스_1] 하샤드 수 JAVA

2022. 7. 1. 23:05·알고리즘/알고리즘 풀이
반응형

 

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

programmers.co.kr

 

문제 설명

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

 

제한 사항

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

 

입출력 예

 

반응형

CODE

class Solution {
    public boolean solution(int x) {
        String str = String.valueOf(x);
        
        String[] numberArr = str.split("");
        
        int sum = 0;
        
        for(String num : numberArr) {
            sum += Integer.parseInt(num);
        }
   
        return (x % sum == 0? true : false);
    }
}

뭔가 멋들어진 '하샤드 수'라해서 어려운 공식인가 싶었는데 잘 읽어보면 그리 어려운 문제는 아니었다. 

1. x의 각 자릿수 구하기
2. x의 각 자릿수를 더한 수 구하기
3. x를 x의 각 자릿수를 더한 수로 나눠 나눠지면 true, 나누어 떨어지지 않으면 false

이 순서대로 코드를 잘 작성하면 쉽게 풀 수 있다. 일단 x의 각 자릿수를 구하는 방법은 아래와 같다.

String str = String.valueOf(x);
        
String[] numberArr = str.split("");

먼저 x를 String 타입으로 만들었다. 그리고 문자열을 split() 함수를 사용해 각 자릿수를 numberArr 배열에 담았다. 즉 x가 10이라면 [1, 0]으로 담았다.

그리고 for문을 돌면서 각 자릿수를 더한 값을 구했다.

int sum = 0;

for(String num : numberArr) {
	sum += Integer.parseInt(num);
}

주의할 점은 numberArr 배열에 있는 요소들은 String 타입이기 때문에 숫자 연산을 하려면 데이터 타입을 정수형으로 바꿔줘야한다. 그래서 Integer.parseInt()로 자릿수를 int 타입으로 변경하고 sum에 누적 저장했다.

마지막으로 return문에서 삼항연산자를 이용해 하샤드 수인지 판별했다.

return (x % sum == 0? true : false);

 

실행 결과

반응형
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/알고리즘 풀이' 카테고리의 다른 글
  • [프로그래머스_1] 크기가 작은 부분문자열 JAVA
  • [프로그래머스_1] 폰켓몬 JAVA
  • [프로그래머스_1] 문자열 다루기 기본 JAVA
  • [프로그래머스_1] 약수의 합 JAVA
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    프로그래머스
    백준
    기출문제
    QueryDSL
    SQL
    전자정부프레임워크
    RESTful
    SpringBoot를 이용한 RESTful Web Service 개발
    스프링부트
    개발자
    springboot
    넥사크로
    토이프로젝트
    토비의스프링부트
    Spring
    에러해결
    oracle
    알고리즘
    MSA
    운영체제
    egov
    방통대
    IT
    프론트엔드
    코딩테스트
    자바스크립트
    인프런
    JPA
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
[프로그래머스_1] 하샤드 수 JAVA
상단으로

티스토리툴바