본문 바로가기
코딩 공부/프로그래머스

프로그래머스 코딩연습 하샤드 수 구하기

by 밍망몽멍뭉 2021. 1. 27.

어제는 너무 어려워서 겁을 먹게되어.. 쉬워 보이는 것을 풀었다

 

프로그래머스 하샤드 수

 

 

긍정회로를 돌리자면.. 이제 이런 문제는 금방 푸는것 같다!

처음에는 어떻게 푸는지도 몰랐는데 이제는 대강 머리가 돌아가는 것 같아 좋다

 

부정회로를 돌리자면.. 이제 이런문제는 그만풀고 더 어려운걸 풀어야하는데 ㅠㅠㅠ 어렵다 어려워

 

하샤드 수

 

문제는 이렇다!!

 

내가 푼 답은 

하샤드 수

 

 

def solution(x):
    part_x = []
    x_ = str(x)
    x_sum = 0
    for i in x_:
        part_x.append(i)
    for i in part_x:
        x_sum += int(i)
    if x % x_sum == 0:
        return True
    else: return False

 

 

요로코롬 된다~~ 맨날 푸는 방식으로 푼다...

1. 일단.. x가 18 이면 1이랑 8로 찢어 놓을 리스트를 생성하고..

2. int는 찢어지지 못하기에 str(x) 로 문자열로 형변환을 해준다

3. 그리고 자리 수의 합을 담당할 변수 x_sum을 만들어준다

4. 그래서 형변환된 x_ 안에 있는 숫자들을 part_x 에 때려붙이고

5. part_x 라는 리스트에 있는 애들을 또 int로 형변환하여 더해준다.

6. 더해준값을 x_sum에 넣어준다

 

7. 그래서 x 나누기 x_sum 자리수 더한값을 나눠서 목값이 0 이 나오면 True 아니면 False를 출력 하는 걸로~~~~

 

 

 

다른 좋은 코드는 다음과 같다

 

 

 

def Harshad(n):
    # n은 하샤드 수 인가요?
    return n % sum([int(c) for c in str(n)]) == 0

 

 

 

for 문 앞에 c 변수를 붙일 수 있다는 거를 매번 까먹는다.. 원래 자주 쓰는 방식이었는데..

또한 변수를 지정할 필요없이 []로 리스트 해주고 리스트 안에있는 것들을 sum해버리는... 멋진 코드이다!!

 

 

내일은 좀 머리좀 굴리는 코드를 풀어보겠다 다짐해본다!!!!