[Codility/Lesson3]Tape_equilibrium

zzarbttoo·2021년 8월 5일
0

코딜리티

목록 보기
6/29

| 1트

import sys 
def solution(A):
    min_num = int(sys.maxsize)

    for i, num in enumerate(A):
        if i == 0:
            continue
        min_num = min(min_num, abs(sum(A[0:i])- sum(A[i:])))

    return min_num

결과는 여기

  • slicing+for문 써서 더 느린거 같다(slicing 은 시간 복잡도 O(N))

| 2트

import sys
def solution(A):
    sum_number = 0
    all_sum = sum(A)
    min_num = int(sys.maxsize)

    for i, num in enumerate(A):
        sum_number += num
        if all_sum == sum_number:
            break
        min_num= min(abs(sum_number - (all_sum - sum_number)), min_num)
    
    return min_num

결과는 여기

-맨 마지막에 출력 한번 안되게 하려고 all_sum == sum_number로 break문을 걸었는데, 음수/양수/0 셋다 나오는 상황이여서 맨 마지막이 아니라 중간이라도 저런 상황이 생기나보다

| 3트

import sys
def solution(A):
    sum_number = 0
    all_sum = sum(A)
    min_num = int(sys.maxsize)

    for i, num in enumerate(A):        
        sum_number += num
        if i == len(A) - 1:
            return min_num

        min_num= min(abs(sum_number - (all_sum - sum_number)), min_num)
    return min_num

print(solution([-1000, 1000]))

결과는 여기

  • 그래서 그냥 len(A) -1 로 바꿨다

세번씩이나 이 거지같은 상황에 버려지다니

profile
나는야 누워있는 개발머신

0개의 댓글