프로그래머스lv1 정답률78% 약수의개수와덧셈

BABY CAT·2022년 10월 9일
0

coding test

목록 보기
8/17
https://school.programmers.co.kr/learn/courses/30/lessons/77884
프로그래머스lv1 정답률78% 약수의개수와덧셈


1. left부터 right까지의 모든 수들
    코드화
    
left=13
right=17
#result=43
for i in range(left, right+1):
    
2. 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return

i로 숫자가 들어오고 약수를 구한다.
    약수의 개수가 짝수인지 홀수인지 구한다
        짝수면 스택으로 더하고 홀수면 버린다
        
약수구하기 코드

    count=0
    for j in range(1, i+1):
        if i % j == 0:  #나눈 나머지가 0이라면 즉 약수라면
            count+=1 #카운트에 스택을 쌓아서 약수의 개수를 구한다
#count2=0
    if count %2 == 0: #약수의 개수가 짝수라면
        count2 += i   #i를 카운트2에 쌓는다

정리




left=13
right=17
count2=0
#result=43
for i in range(left, right+1):
    count=0
    for j in range(1, i+1):
        if i % j == 0:  #나눈 나머지가 0이라면 즉 약수라면
            count+=1 #카운트에 스택을 쌓아서 약수의 개수를 구한다

    if count %2 == 0: #약수의 개수가 짝수라면
        count2 += i   #i를 카운트2에 쌓는다
print(count2)


문제를 잘못 봄

약수 개수가 홀수면 i를  - 를 해줘야 하는데 그냥 버렸다

코드 추가


left=13
right=17
count2=0
#result=43
for i in range(left, right+1):
    count=0
    for j in range(1, i+1):
        if i % j == 0:  #나눈 나머지가 0이라면 즉 약수라면
            count+=1 #카운트에 스택을 쌓아서 약수의 개수를 구한다

    if count %2 == 0: #약수의 개수가 짝수라면
        count2 += i   #i를 카운트2에 쌓는다
    else:
        count2 -= i
print(count2)
출력 43 정답!


함수로 변경
나의풀이
def solution(left, right):
    count2=0
    for i in range(left, right+1):
        count=0
        for j in range(1, i+1):
            if i % j == 0:  #나눈 나머지가 0이라면 즉 약수라면
                count+=1 #카운트에 스택을 쌓아서 약수의 개수를 구한다
        if count %2 == 0: #약수의 개수가 짝수라면
            count2 += i   #i를 카운트2에 쌓는다
        else:
            count2 -= i
    return count2 

테스트 ㄱ

100% 정답

좋아요 1위 정답

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer

이걸 보면
int(i0.5)==i0.5 라면 약수 개수가 홀수
int(i0.5)==i0.5 아니라면 약수 개수가 짝수
라는 말이 되는데
0.5승이라면 루트씌운 거고
루트에 인트 건거랑 그냥 루트랑 같으면 약수개수가 홀수라는 말인데
인트를 건다는 건 소수점 없애는 거고...

정리하면
-약수가 홀수개면 제곱수
약수가 짝수개면 제곱수가 아니다-

이건데 이걸 어떻게 이렇게 풀지
수학 배울 때 이미 알고 있던 원리였겠지?

0개의 댓글