Python

Python 코드카타: 약수의 개수와 덧셈 | 문자열 내림차순으로 배치하기

sawo11 2025. 1. 8. 18:08

약수의 개수와 덧셈

두 정수 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)