코딩테스트/프로그래머스

[프로그래머스] [Level 1] 하샤드 수

박소민 2022. 2. 6. 18:01
문제) 하샤드 수
 

코딩테스트 연습 - 하샤드 수

양의 정수 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(문자/문자열) : 불가능