[프로그래머스/C++] ㅡ LV1 - 정수 제곱근 판별

2021. 4. 4. 13:46필요/코딩테스트(프로그래머스)

문제

programmers.co.kr/learn/courses/30/lessons/12947

 

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

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

programmers.co.kr

풀이

#include <string>
#include <vector>

using namespace std;

bool solution(int x) {
    bool answer = true;
    int middle = x;
    int digit = 0;
    while (middle > 0) {	// 자릿수 계산
        digit += middle % 10;
        middle /= 10;
    }
    if (x % digit != 0) {
        answer = false;
    }
    return answer;
}

풀이

정수의 각 자릿수에 접근해야한다.

두가지 방법이 있다.

첫번째는 정수에 /와 % 연산을 사용하는 것이다.

두번째 방법은 정수를 문자열로 변환하여 자릿수에 접근하는 방법이다.

 

이렇게 정수로 입출력이 주어지는 경우 첫번째 방법이 더 효율적일 것이다.