약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
나의 풀이
- count = 0을 바깥에 선언할 경우 모든 숫자의 약수의 개수를 더하게 됨
def solution(left, right):
answer = 0
for i in range(left, right+1):
count = 0 # count = 0을 바깥에 선언할 경우 모든 숫자의 약수의 개수를 더하게 됨
for j in range (1, i+1):
if i % j == 0:
count += 1
if count % 2 == 0:
answer += i
else:
answer -= i
return answer
다른 풀이
- 숫자 i의 약수 개수가 홀수인 경우는, i가 완전제곱수일 때에만 발생
- sqrt = math.sqrt(i): 숫자 i의 제곱근 계산
- int(sqrt): sqrt를 정수로 만든 값과 sqrt 값이 같으면 i는 완전 제곱수 => 홀수
import math
def solution(left, right):
answer = 0
for i in range(left, right + 1, 1):
sqrt = math.sqrt(i) # 숫자 i의 제곱근 계산
if int(sqrt) == sqrt: # sqrt를 정수로 만든 값과 sqrt 값이 같으면 i는 완전 제곱수 => 홀수
answer -= i
else:
answer += i
return answer
문자열 내림차순으로 배치하기
나의 풀이
- reversed 사용
- ' '.join: 리스트를 문자열로 변환
def solution(s):
answer = ''.join(sorted(s, reverse=True))
return answer
다른 풀이
- [ : : -1]: 정렬된 리스트를 뒤집음 => 내림차순 정렬
def solution(s):
answer = (''.join(sorted(s)[::-1]))
return answer
[추가학습] 슬라이싱 기본 구조
sequence[start:stop:step]
- sequence는 문자열, 리스트 등 슬라이싱이 가능한 데이터 타입
- start: 슬라이싱 시작 인덱스 (기본값: 처음부터)
- stop: 슬라이싱 종료 인덱스(포함되지 않음, 기본값: 끝까지)
- step: 슬라이싱 간격 (기본값: 1)
'Python' 카테고리의 다른 글
Python 챌린지반 과제: API구현하고 출력하기 (0) | 2025.01.20 |
---|---|
Python 코드카타: 부족한 금액 계산하기 | 문자열 다루기 기본 (0) | 2025.01.13 |
Python 코드카타: 수박 | 내적 (0) | 2025.01.07 |
Python 코드카타 오답: 제일 작은 수 제거하기 | 가운데 글자 가져오기 (0) | 2025.01.06 |
Python 코드카타: 핸드폰 번호 가리기 | 없는 숫자 더하기 (0) | 2024.12.24 |