기타/Codility

[Easy] ChocolatesByNumbers

백곰곰 2022. 6. 6. 21:57
728x90
반응형

[문제]

원 형태로 놓인 N개의 초콜렛을 M칸씩 이동하며 먹었을 때 먹을 수 있는 초콜렛의 수를 세는 문제

 

[코드]

시간복잡도 : O(N+M) (성능 테스트 Fail)

def solution(N, M):
    # write your code in Python 3.6
    answer=1
    check = [0] * N
    check[0]=1
    current=0
    while True :
        current = current + M
        if check[current%N] == 1 :
            break;
        else :
            check[current%N] = 1
            answer = answer+1
    return answer

시간복잡도 : O(log(N+M)) (성능 테스트 Pass)

최대 공약수 활용

import math
def solution(N, M):
    # write your code in Python 3.6
    gcdvalue = math.gcd(N,M)

    if gcdvalue==0 :
        return N
    else :
        return int(N/gcdvalue)
728x90

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

[Easy] MaxNonoverlappingSegments  (0) 2022.06.07
[Elementary] ParkingBill  (0) 2022.06.07
[Easy] MaxProductOfThree  (0) 2022.06.06
[Easy] AbsDistinct  (0) 2022.06.01
[Easy] CountFactors  (0) 2022.05.30