[Codility/Lesson8]EquiLeader

zzarbttoo·2021년 9월 19일
0

코딜리티

목록 보기
19/29

| 1트

import collections

def solution(A):

    a_length = len(A)
a_hash = collections.defaultdict(int)
    lead_num = 0
    answer=0

    for i, num in enumerate(A):
        a_hash[num] += 1 
        if a_hash[num] > a_length/2:
            lead_num = num 
            break
        
    for i , _ in enumerate(A[:-1]):
        if A[:i + 1].count(lead_num) > (i+1) / 2 and A[i+1 : ].count(lead_num) > (a_length - i - 1) / 2:
            answer += 1

    return answer
     

결과는 여기에

  • 고냥 했는데 역시 n^2여서 안된다


| 2트

import collections
def solution(A):

    a_length = len(A)
    a_hash = collections.defaultdict(int)
    lead_num = 0
    answer=0

    for i, num in enumerate(A):
        a_hash[num] += 1 
        if a_hash[num] > a_length/2:
            lead_num = num 
            break
        
    for i , _ in enumerate(A[:-1]):
        
        first_count = 0
        is_first = False
        for num in A[:i + 1]:
            if num == lead_num:
                first_count += 1
                if first_count > (i + 1) / 2:
                    is_first = True
        if is_first:
            second_count = 0
            for num in A[i + 1:]:
                if num == lead_num:
                    second_count += 1
                    if second_count > (a_length - i - 1) / 2:
                        answer += 1
                        continue
        else:
            continue
        
    return answer

결과는 여기에

  • 중간에 혹시 반복문을 덜 실행(?) 해보면 괜찮을까 해서 위처럼 짰는데 오히려 더 안 좋아졌다

| 3트

import collections
def solution(A):
    a_length = len(A)
    a_hash = collections.defaultdict(int)
    lead_num = 0

    for i, num in enumerate(A):
        a_hash[num] += 1 
        if a_hash[num] > a_length/2:
            lead_num = num 

    answer = 0
    count = 0
    for i, num in enumerate(A):
        if num == lead_num:
            count += 1
        if count > (i + 1) / 2 and a_hash[lead_num] - count > (a_length - i - 1) /2 :
            answer += 1

    return answer 
  • 생각해보니 for문 한번 돌면서 count 계속 갱신하면 해결되는 문제였다
    결과는 여기에
profile
나는야 누워있는 개발머신

0개의 댓글