나의 코드

from itertools import permutations

def check(k, dungeon):
    count = 0
    for i in dungeon:
        if k >= i[0]:
            k -= i[1]
            count += 1
    return count

def solution(k, dungeons):
    answer = 0

    for i in permutations(dungeons, len(dungeons)):
        cur = 0
        if check(k, i):
            cur = check(k, i)
        answer = max(answer, cur)

    return answer

 

내 피로도는 0....

나의 코드

def convert(num, base):
    import string
    tmp = string.digits + string.ascii_lowercase
    q, r = divmod(num, base)
    if q == 0:
        return tmp[r]
    else:
        return convert(q, base) + tmp[r]


def isprime(n):
    for i in range(2, int(n ** .5) + 1):
        if n % i == 0:
            return False
    return True

def solution(n, k):
    answer = 0
    cur = convert(n, k).split("0")

    for i in cur:
        if len(i) == 0 or int(i) < 2:
            continue

        if isprime(int(i)):
            answer += 1

    return answer

나의 코드

def solution(k, tangerine):
    data = {}
    cur = 0
    answer = 0
    for i in tangerine:
        data[i] = data.get(i, 0) + 1

    data = dict(sorted(data.items(), key=lambda x:x[1], reverse=True))
    for i in data.keys():
        cur += data[i]
        answer += 1

        if cur >= k:
            return answer

 

count 함수, sort 함수를 사용하면 시간 초과 발생

dictionary를 사용하여 O(n)으로 범주를 확인해야 함

최초 풀이 - 효율성 테스트 시간 초과

def solution(phone_book):
    answer = True
    
    for i in phone_book:
        for j in phone_book:
            if i == j:
                continue
            if j.startswith(i):
                return False
    return answer

 

정답 코드

def solution(phone_book):
    phone_book.sort()
    
    for i, j in zip(phone_book, phone_book[1:]):
        if j.startswith(i):
            return False
    return True

+ Recent posts