☑️하샤드 수
[문제]
- 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
[문제 해결1 - for & if 문]
- for문 : x의 각 자리수의 합 구한 뒤
- if 문 : x에 나눈 나머지가 0일때 True, 아니면 False
def solution(x):
sum = 0 # 각자리수 합
for i in str(x):
sum += int(i) # 숫자로 변환해서 연산
if x%sum == 0:
answer=True
else:
answer=False
return answer
[문제 해결- 리스트 컴프리헨션]
- x의 각자리수의 합 : sum(int(i) for i in str(x))
- x의 각자리수의 합을 x로 나눈 나머지가 0 인 조건 충족시 True/ 아닐경우 False 반환 : x%sum(int(i) for i in str(x)) == 0
def solution(x):
return x%sum(int(i) for i in str(x)) == 0
[Point]
✔️ return 은 조건식(boolean 타입) 도 받을 수 있음.
✔️ for 문 값의 합은 내장함수 sum 으로 사용 가능
☑️두 정수 사이의 합
[문제]
- 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
[문제 해결1 - for & if 문]
- if 조건문 : a,b는 대소관계가 없으므로 조건별 값 구하기
- a<b : for 문 range(a,b+1) 돌려서 누적합 구하기
- a<b : for 문 range(b,a+1) 돌려서 누적합 구하기
- a=b : a or b 값 반환
def solution(a, b):
answer = 0
if a<b:
for i in range(a,b+1): #sum(i for i in range(a,b+1))
answer += i
elif a>b:
for i in range(b,a+1):
answer += i
else:
answer = a
return answer
[문제 해결2 - range& sum or 조건 최적화 ]
- Sum(range()) 로 매개변수a,b 사이 값 구할 수 있음
- (조건 최적화+) : 조건당 수행문 `sum(range())` 이 유사함 최적화 하기
- 문제가 되는 a>b때 a,b의 값을 서로 바꿔줌
- 그리고 수행문 `sum(range(a,b+1))` 출력
#방법1 : sum(range()) 이용하여 a,b의 합 구하기
def solution(a, b):
answer = 0
if a<b:
answer = sum(range(a,b+1))
elif a>b:
answer = sum(range(b,a+1))
else:
answer = a
return answer
#방법 2 : a>b 조건일때 a,b 값 변경 해주어 최적화
if a > b: # a가 크면
a, b = b, a # 두 변수 값을 바꿔서
return sum(range(a, b + 1)) # 연산해줌
[Point]
✔️ sum(range()) 로 두수사이의 합을 간단하게 구할 수 있음
✔️ 수행문이 유사할 경우 최적화 할수있는 방법 생각 해볼것!
✔️return 하단으로 빼주기
'PYTHON' 카테고리의 다른 글
데이터 시각화 | Matplotlib 기본 of 기본 문법 (1) | 2024.12.19 |
---|---|
데이터 전처리 실습 | Pandas 결측치 / 중복값 / 이상치 처리/minmax 정규화 (0) | 2024.12.18 |
데이터 전처리 | Pandas 기본 함수 3 (concat,merge,groupby,pivot_table,sort_value) (1) | 2024.12.17 |
데이터 전처리| Pandas 기본 함수2 (loc, iloc,isin) (0) | 2024.12.17 |
데이터 전처리 | Pandas 기본 함수 1 (1) | 2024.12.17 |