개발일지/코딩테스트
[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
반응형