◼ PS Note/프로그래머스

[프로그래머스] 하샤드 수 (📘Lv. 1) (Python)

SangYoonLee (SYL) 2023. 2. 22. 00:42
반응형

문제 바로 가기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


풀이 (Python)

  • 사용 언어 : Python
  • 풀이한 날짜 : 2022-04-07
def solution(x):
    answer = True
    sum_x = 0
    str_x = str(x)
    for elem in str_x:
        sum_x += int(elem)

    if x % sum_x:
        answer = False

    return answer

 

풀이 로직 및 문제 접근 과정

  • 결국 내가 하면 되는 것은 x % (x의 각 자리수의 합) == 0 이 참인가 거짓인가를 밝히는 것 뿐이다. (O(1) 시간 내에 충분히 가능)
  • 그럼 관건은 'x의 각 자리수를 어떻게 분리해서 모두 더할 것인가' 인데,
  • 이건 그냥 x를 문자열로 바꾸면, for문을 통해 x의 각 자리를 다 탐색할 수 있게 되므로 변수 하나 선언해서 모두 더해주면 된다.
    • 물론 더할 때 다시 정수로 형변환 해주어야 한다.

 

느낀점

  • 어떻게 풀 지 1분 고민하고 바로 해결한 문제.
  • 생각보다 프로그래머스 LEVEL 1 문제가 할 만하다는 것을 느끼고 자신감이 붙었다.

 


풀이2 (Python) (모범 답안 참고)

  • 사용 언어 : Python
  • 풀이한 날짜 : 2022-04-07
def Harshad(n):
    # n은 하샤드 수 인가요?
    return n % sum([int(c) for c in str(n)]) == 0

print(Harshad(18))

 

풀이 로직

  • 풀이 로직은 내 첫 풀이와 동일하다. (그럼에도 단 한 줄로만 짰다는 것이 대단한 거지..)

 

느낀점

  • list comprehension을 이용해서 이렇게 한 줄로 짤 수도 있구나.. 싶었다.
  • sum([int(c) for c in str(n)]) ← 이 표현식에 배울 점이 많다.
    • list comprehension과 sum 함수를 통해 '각 자리수의 합' 한 번에 계산하기

 

반응형