나의 풀이

def solution(s):
    sample = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    for i in range(10):
        s = s.replace(sample[i], str(i))
    return int(s)

 

문자열 대치는 replace를 적극 활용하자.

 

 

나의 답안

def solution(id_list, report, k):
    answer = {i:[0] for i in id_list}
    data = {i:[0] for i in id_list}
    
    for i, cur in enumerate(report):
        x, y = cur.split(" ")
        if x not in data[y]:
            data[y][0] += 1
            data[y].append(x)
    
    
    for i in data.values():
        if i[0] >= k:
            for j in i[1:]:
                answer[j].append(1)

    real = []
    for i in answer.values():
        real.append(sum(i))
    
    return real

 

나의 답안

def solution(today, terms, privacies):
    answer = []
    y, m, d = map(int, today.split("."))
    today = y * 12 * 28 + m * 28 + d
    terms = {i[:1]:int(i[2:]) * 28 for i in terms}

    for i, privacy in enumerate(privacies):
        y, m, d = privacy.split('.')
        d, c = d.split()
        result = int(y) * 12 * 28 + int(m) * 28 + int(d) + terms[c]
        if result <= today:
            answer.append(i + 1)
    return answer

 

Key Point

 

한 달을 28일로 가정하고 날자를 계산해야 하는 문제였는데

YYYY.MM.DD  + YYYY.MM.DD 형식으로만 생각했더니 식이 더러워지고 연산이 복잡했다.

 

단순히 유효기간을 넘겼는지 여부만을 판단하는 거라면

년도 * 12 * 28

달 * 28

을 통해 모든 날자를 "일"로 변환하여 계산하는 것이 훨씬 편할 수도 있겠다.

 

나의 코드

def solution(price, money, count):
    result = money - sum(range(1, count + 1)) * price
    return abs(result) if result < 0 else 0

 

산술 평균, 등차수열의 합 공식을 이용할 수도 있겠다.

+ Recent posts