놓고 있던 알고리즘 다시 도전 중 배운거 안까먹으려고 올림미다
맨 처음 짰던 코드는 3-4줄 더 길었는데 남자친구가 도와줘서 줄인 버전
잊지말자 숫자 하나씩 모으고 싶으면 while
문 안에서 % 10
, /= 10
해주기.. 비슷한 문제가 많은데도 항상 까먹는 나..
벡터 안 쓴 하샤드 수.cpp
#include <string>
#include <vector>
using namespace std;
bool solution(int x) {
int sum = 0;
int number = x;
while(number > 9) {
sum += number % 10;
number /= 10;
}
sum += number;
return x % sum == 0;
}
number /= 10;
을 해줘야 while
문이 돌아가면서 맨 뒤 숫자가 하나씩 잘라진다
📌 원래는 (x % sum) != 0
을 if
문으로 받고 맞으면 false 반환, 아니면 true 반환으로 했었는데 다 지우고 return
에 논리연산자 x % sum == 0
을 해줘서 맞으면 true 아니면 false 반환한다는 거 알게됨
아 while문 끝나고 마지막에 한자리 남은 것도 더해줘야
++
while(num>0) {
sum += num%10;
num = num/10;
}
이런식으로 한 번에 쓰는 것도 된다고 합닏