본문 바로가기
코딩 테스트/프로그래머스

기사단원의 무기

by ornni 2024. 5. 17.
728x90
반응형

첫번째 코드

 

약수를 구하는 방법이 포인트겠군...

값에 반복해서 나눠서 맞는거면 count에 추가하는 형식이면 약수를 구하는 방법!

 

def solution(number, limit, power):
    
    divisor = []
    count = 0
    
    for i in range(1, number+1):
        for j in range(1, i+1):
            if i%j == 0:
                count += 1
        divisor.append(count)
    
    for i in range(number):
        if divisor[i] > limit:
            divisor[i] = power
    
    return sum(divisor)

 

시간초과....오류?


두번째 코드

 

아 count를 리셋시키지 않아서 미친듯이 합해지고 있었다..

 

def solution(number, limit, power):
    
    divisor = []
    count = 0
    
    for i in range(1, number+1):
        count = 0
        for j in range(1, i+1):
            if i%j == 0:
                count += 1
        divisor.append(count)
    
    for i in range(number):
        if divisor[i] > limit:
            divisor[i] = power
    
    return sum(divisor)

 

시간초과요..?


세번째 코드

 

계산 수를 줄일 수 있는 위치는 약수를 구하는 방법에서 일 것이고,

약수는 하나가 있으면 하나의 쌍이 존재하는 법

단지 제곱근이 존재하는 경우가 1개만 있는 것이지!

ex1) 15 → 1, 3, 5, 15

ex2) 16 1, 2, 4, 8, 16

 

위를 반영해서 코드를 작성하자!

 

def solution(number, limit, power):
    
    divisor = []
    count = 0
    
    for i in range(1, number+1):
        count = 0
        interval = int((i)**0.5)
        for j in range(1, interval+1):
            if i%j == 0:        
                if i == j**2:
                    count += 1
                else:
                    count += 2
        divisor.append(count)

    for i in range(number):
        if divisor[i] > limit:
            divisor[i] = power
    
    return sum(divisor)

 

통과!


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/136798.%E2%80%85%EA%B8%B0%EC%82%AC%EB%8B%A8%EC%9B%90%EC%9D%98%E2%80%85%EB%AC%B4%EA%B8%B0

 

programmers/프로그래머스/1/136798. 기사단원의 무기 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

피보나치 수  (2) 2024.05.18
카펫  (0) 2024.05.17
햄버거 만들기  (2) 2024.05.16
행렬의 곱셈  (0) 2024.05.15
붕대 감기  (0) 2024.05.15