개발일지/코딩테스트

[Programmers] 하샤드 수(c++)

쫌눈 2025. 3. 6. 17:42
728x90
반응형

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제는 위 참고

하샤드 수
주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어떨어지는 자연수

 

설명할게 많이 없어서 코드 먼저 첨부

#include <string>

using namespace std;

bool solution(int x) {
    bool answer = true;
	string str = to_string(x);
	int a = 0;

	for (int i = 0; i < str.length(); i++)
	{
		a+=str[i] - '0';
	}

	if (x%a != 0)
	{
		answer = false;
	}

    return answer;
}

c++은 문자를 int로 받을 때 ASCII코드값으로 변환을 한다.

그러므로 변환 시 ASCII코드 값 '0'을 빼주면 int값이 나온다.

https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C

 

아스키 코드

파일:attachment/1275273992_asciitable.gif 2열 이후의 코드들은 위키에서 사용할 수

namu.wiki

아스키 코드 값은 위 참고.

아스키 코드 값을 보면 0(48)~ 9(57)로 정의되어 있다.

실제 코드에서 ASCII값으로 변환되는지 확인해보면 아래 사진과 같다.

'1'은 49로 치환이 되고, '0'은 48로 치환이 된다.

1-0 = 49-48이 성립하므로 '0'을 감산하여 계산했다.

728x90
반응형