본문 바로가기
Problem Solving

[C++] [프로그래머스] 하샤드 수 (pps 4-7)

by tls1107 2021. 7. 18.
728x90
반응형


문제 풀기 전 생각 : 

/*
입력받은 숫자를 문자열로 변환 후
각 문자열의 캐릭터마다 '0'을 뺀 값을 변수 n에 더하고
만약 x%n 이 0이라면 하샤드 수이고
아니라면 하샤드 수가 아니다
*/

 


#include <iostream>
#include <string>
using namespace std;

bool solution(int x) {
    string s = to_string(x);
    int n = 0;
    for(int i=0 ; i<s.length() ; i++){
            n += (int)(s[i] - '0');
    }
    if(x%n == 0) return true;
    return false;
}

https://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 nTemp = x;
    int nSum = 0;
    while (nTemp > 0)
    {
        nSum += nTemp % 10;
        nTemp /= 10;
    }

    return x % nSum == 0 ? true : false;
}

아스키 코드와 문자열을 사용하지 않고

나누기와 나머지를 활용해 푼 듯 하다

이렇게 푸는 방법도 있구나~ 나쁘지 않다.

728x90
반응형

댓글