기타/Codility

[Easy] MinPerimeterRectangle

백곰곰 2022. 6. 10. 22:45
728x90
반응형

[문제]

N = A*B 를 만족하는 A, B 중 2*(A+B)의 값이 가장 작은 경우를 찾는 문제

 

MinPerimeterRectangle coding task - Learn to Code - Codility

Find the minimal perimeter of any rectangle whose area equals N.

app.codility.com

 

[풀이]

1 부터 N의 제곱근 사이에서 N의 약수를 찾고, 가장 큰 약수를 A로 여겨 2*(A+N/A) 값을 반환

시간복잡도 : O(sqrt(N))

import math
def solution(N):
    # write your code in Python 3.6
    root = int(math.sqrt(N))
    A = 1
    for i in range(1, root+1) :
        if N%i == 0 :
            A = i
    return 2*(A + int(N/A))
728x90

'기타 > Codility' 카테고리의 다른 글

[Demo] MissingInteger  (0) 2022.06.11
[Easy] Nesting  (0) 2022.06.10
[Easy] FrogRiverOne  (0) 2022.06.09
[Easy] CountDistinctSlices - 70%  (0) 2022.06.08
[Easy] TapeEquilibrium  (0) 2022.06.08