문제) 하샤드 수
코딩테스트 연습 - 하샤드 수
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하
programmers.co.kr
- 내 풀이
def solution(x):
k=x
sum=0
n=[10000,1000,100,10]
for i in n:
a=x//i
x%=i
sum+=a
sum+=x
answer=bool(k%sum==0)
return answer
- 몫(//), 나머지(%) 연산 이용해서 자릿수의 합 구함
- 다른 사람 풀이
def solution(x):
answer= bool(x % sum([int(i) for i in str(x)]) ==0)
#bool() 없어도 boolean 값 나옴
return answer
#변수에 안넣고 바로 리턴 값에 넣을 수 있음
def solution(x):
return x % sum([int(i) for i in str(x)]) ==0
- 이 방식을 이용하려했으나 str(x)를 chr(x)로 넣은 탓에 에러 발생
- str(x) : x값을 문자열로 변환
- 정수, 실수, 문자, 문자열, 불리언 값 다 가능
- str(boolean 값): True → True / False → False
- chr(x) : 숫자를 유니코드 문자로 변환
- chr(정수): 정수를 유니코드에 맞는 문자로 변환하는 것 ex) chr(54)=6 / chr(65)='A'
- chr(boolean 값) : True →1 / False → 0으로 변환
- chr(실수) / chr(문자/문자열) : 불가능
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 1] 콜라츠 추측 (0) | 2022.02.07 |
|---|---|
| [프로그래머스] [Level 1] 평균 구하기 (0) | 2022.02.07 |
| [프로그래머스] [Level 1] 핸드폰 번호 가리기 (0) | 2022.02.06 |
| [프로그래머스] [Level 1] 행렬의 덧셈 (0) | 2022.02.05 |
| [프로그래머스] [Level 1] x만큼 간격이 있는 n개의 숫자 (0) | 2022.02.05 |