반응형
문제 바로 가기
풀이 (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 함수를 통해 '각 자리수의 합' 한 번에 계산하기
반응형
'◼ PS Note > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 옹앓이 (1) (📓Lv. 0) (JavaScript) (0) | 2023.01.22 |
---|