나의 코드

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

나의 답안

def task(str):
    tmp = []
    for i in range(len(str) - 1):
        if str[i].isalpha() and str[i + 1].isalpha():
            tmp.append(str[i] + str[i + 1])
    return tmp

def solution(str1, str2):
    str1 = str1.upper()
    str2 = str2.upper()
    a, b = task(str1), task(str2)
    c = set(a) & set(b)
    c2 = 0
    for i in c:
        c2 += min(a.count(i), b.count(i))

    d = set(a) | set(b)
    d2 = 0
    for i in d:
        d2 += max(a.count(i), b.count(i))

    if any(d):
        return int((c2 / d2) * 65536)
    else:
        return 65536

최초 코드 - 시간 초과

def solution(n, left, right):
    answer = [[] for _ in range(n)]
    
    for i in range(n):
        for j in range(i + 1):
            answer[i].append(i + 1)
        for k in range(i + 1, n):
            answer[i].append(k + 1)

    result = []
    for i in answer:
        result = result + i
    
    return result[left:right + 1]

 

정답 코드

def solution(n, left, right):
    answer = []
    for i in range(left, right + 1):
        answer.append(max(i // n, i % n) + 1)
    return answer

+ Recent posts