< 문제 1 >
문제
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건
x는 1 이상, 10000 이하인 정수입니다.
입출력 예
arr return 10 true 12 true 11 false 13 false
입출력 예 #1
10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.
입출력 예 #2
12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.
입출력 예 #3
11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.
입출력 예 #4
13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.
▶ my code
def solution(x):
my_num = 0
for i in range(len(str(x))):
my_num += int(str(x)[i])
if x % my_num == 0:
answer = True
else:
answer = False
return answer
▶ 아이디어
쉬운 문제이니, 문제를 최대한 빨리 이해하고 빠르게 푸는 습관을 들입시다
< 문제 2 >
문제
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한 조건
n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n result 45 7 125 229
입출력 예 #1
답을 도출하는 과정은 다음과 같습니다.
따라서 7을 return 해야 합니다.
n (10진법) n (3진법) 앞뒤 반전 (3진법) 10진법으로 표현 45 1200 0021 7
입출력 예 #2
답을 도출하는 과정은 다음과 같습니다.
따라서 229를 return 해야 합니다.
n (10진법) n (3진법) 앞뒤 반전 (3진법) 10진법으로 표현 125 11122 22111 229
▶ my code
def solution(n):
answer = 0
num = ''
while n > 0:
n, mod = divmod(n, 3)
num += str(mod)
answer = int(num, 3)
return answer
▶ 아이디어
n, mod = divmoid(n, m) 은 n을 m으로 나눈 몫을 n에 저장하고, 나머지를 mod에 저장합니다.
10진법을 3진법으로 바꾸는 방법을 이렇게 간단하게 표현해봅시다.
'Python > 프로그래머스' 카테고리의 다른 글
[programmers] LV 1. 정수 제곱근 판별 (Python/파이썬) (0) | 2022.04.20 |
---|---|
[programmers] LV 1. 제일 작은 수 제거하기 (Python/파이썬) (0) | 2022.04.20 |
[programmers] LV 1. 최대공약수와 최소공배수 (Python/파이썬) (0) | 2022.03.09 |
[programmers] LV 1. 콜라츠 추측 (Python/파이썬) (0) | 2022.03.09 |
[programmers] LV 1. 평균 구하기 (Python/파이썬) (0) | 2022.03.08 |