나의 코드 - 정답

from itertools import combinations

def solution(number):
    answer = 0
    for i in combinations(number, 3):
        if sum(i) == 0:
            answer += 1
    return answer

 

Key Point

제한 시간 내에 단순 반복문을 짜고 돌리기엔 어렵다.

모듈을 적극적으로 활용하자

itertools - combinations

 

제출 답안 - 정답

def solution(need, give, have):
    answer = 0
    while have >= need:
        answer += have // need * give
        have = (have // need) * give + have % need
    return answer

 

 

 

다른 사람의 답안

solution = lambda a, b, n: max(n - b, 0) // (a - b) * b

꺼번에 계산하지 않고 a개만 팔고 b개를 받는 과정은 결국 a-b 개씩 병을 소비하는 것으로 생각,

첫번째 진행할 때는 a개만 소비되기 때문에, b만큼 못받음(-b),

그 조건을 먼저 계산 n-b 반복횟수는 n-b // (a-b) 여기에 받는 병수 b 곱한 것

최초 답안 - yeye와 같이 연속되는 문자열 캐치 불가

 

def solution(babbling):
    data = ['aya', 'ye', 'woo', 'ma']
    answer = 0

    for i in babbling:
        count = 0
        for j in data:
            if j in i:
                count += len(j) * i.count(j)

        if count == len(i):
            answer += 1

    return answer

 

 

답안

 

def solution(babbling):
    data = ['aya', 'ye', 'woo', 'ma']
    answer = 0

    for i in babbling:
        for j in data:
            if j * 2 not in i:
                i = i.replace(j, ' ')
        if i.strip() == '':
            answer += 1

    return answer

Key Point

1. 파이썬 문자열은 곱셉 연산이 가능한 점

2. 문자열을 전부 돌면서 2중 for문으로 탐색하려 했으나, replace로 원하는 문자열을 공백으로 만든 뒤 마지막에 strip을 통해 처리 가능.

 

 

1. 시간초과 - 50점 코드

def detection(data):
    burger = [1, 2, 3, 1]
    if len(data) < 4:
        return -1
    
    for i in range(len(data) - 3):
        if data[i:i+4] == burger:
            return data[:i] + data[i+4:]
    
    return -1
    

def solution(ingredient):
    answer = 0
    while True:
        ingredient = detection(ingredient)
        if ingredient == -1:
            break
        answer += 1
    return answer

 

2. del을 이용한 풀이

def solution(ingredient):
    data = []
    answer = 0
    for i in ingredient:
        data.append(i)
        if data[-4:] == [1, 2, 3, 1]:
            answer += 1
            del data[-4:]
    return answer

 

 

+ Recent posts