코딩하는 해달이

[level 1] 하샤드 수 본문

개인 공부/프로그래머스

[level 1] 하샤드 수

코딩하는 해달 2022. 7. 19. 23:20

문제 설명

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

제한 조건

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

문제 이해

1이상 10000이하인 x가 자릿수의 합으로 나누어 떨어지는지 확인해야한다.

x가 10000이하이기 때문에 자동 형 변환을 이용해 10000의 자릿수(10000도 포함하기 때문)부터

(x / 1000), (x % 1000) / 100, (x % 100) / 10, (x % 10)로 자릿수를 구해서 더한 후에 x와 나누었을 때, 나누어지는지 아닌지 판별하면 된다.

 

알고리즘

(x / 1000) : 천의 자리 → (x % 1000) / 100 : 백의 자리 → (x % 100) / 10 : 십의 자리 → (x % 10) : 일의 자리 → 더한 후 나머지 연산

 

풀이 코드

#include <string>
#include <vector>

using namespace std;

bool solution(int x) {
    int sum = (x / 1000) + (x % 1000) / 100 + (x % 100) / 10 + (x % 10);
    return (x % sum == 0) ? true : false;
}

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형
Comments