-
반응형
https://programmers.co.kr/learn/courses/30/lessons/12947
코딩테스트 연습 - 하샤드 수
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하
programmers.co.kr
-풀이-
먼저, x의 자릿수의 합을 구해야 한다.
x는 맨 마지막에 나누어떨어지는지에 써야하므로 임시변수 n에 x의 값을 넣는다.
그런뒤, n의 맨 왼쪽부터 더해준다. n%10을 이용해주면, n의 맨 왼쪽의 값을 얻을 수 있다. 이 값은 사용했으므로, n=n/10을 해서, 사용한 자리는 제거해주며 모든 자릿수의 합을 구해준다.
ex)
n=121일때 s의 초기값 =0,
s=s+n%10=0+1=1
n=n/10=12
s=s+n%10 = 1+2 = 3
n=n/10=1
s=s+n%10 = 3+1=4
n=n/10 = 0
n=0이되면, 모든 자릿수를 더했다는 뜻이 되므로, 종료
그런뒤, x와 자릿수의 합 s를 나눴을때, 나누어떨어지면 true, 나누어떨어지지 않는다면 false를 출력해주면된다.
-시간복잡도-
간단한 계산이므로 O(1)이다
-코드-
#include <string> #include <vector> using namespace std; bool solution(int x) { bool answer = true; int n=x; int s=0; while(n>0){ s+=n%10; n/=10; } answer=!(x%s); return answer; }
반응형'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 행렬의 덧셈 (0) 2021.06.19 [프로그래머스] 핸드폰 번호 가리기 (0) 2021.06.19 [프로그래머스] 평균 구하기 (0) 2021.06.19 [프로그래머스] [1차] 비밀지도 (0) 2021.06.19 [프로그래머스] 이름이 있는 동물의 아이디 (0) 2021.06.13 댓글