[Codility/Lesson4]Frog_river_one(python)

zzarbttoo·2021년 8월 5일
0

코딜리티

목록 보기
7/29

| 1트

import collections
def solution(X, A):

    step_list = collections.defaultdict(list)

    for i, time in enumerate(A):
        step_list[time].append(i)
   
    for i in range(1, X + 1):
        if len(step_list[i]) == 0:
            return -1
    
    return step_list[X][0]
  • (3, [1, 3, 1, 3, 2, 1, 3])를 넣을 때 왜 4가 나와야하지 1아닌가? 이러면서 생각하고 있었는데 문제를 잘 못 이해한 듯 했다
  • 떨어지는 위치만 고려할 게 아니라 시간도 고려해야 하는 거였다

| 2트

import collections
def solution(X, A):
    
    answer_num = collections.defaultdict(int)
    answer_key = [i for i in range(1, X+1)]

    for i, num in enumerate(A):
        answer_num[num] += 1
        if sorted(list(answer_num.keys())) == answer_key:
            return i

    return -1
  • 느리겠지 했는데 정말 느리다 역시 (중간의 sorted때문에)
  • sorted 안하고 set으로 바꿔서 difference 를 체크하는 방식을 썼는데도 안됐음

Python - List, Set, Dict 자료형에 따른 시간 복잡도(Big-O)

| 3트

난 바보다
문제에 떡하니 숫자가 X 범위까지만 나온다고 써있는데
더 큰 숫자가 중간에 나오면 어떡하지 이러면서 자체 하드모드를 하고 있었다^^^^ㅜㅜ🤦‍♀️

def solution(X, A):
    num_set = set()

    for i, num in enumerate(A):
        num_set.add(num)

        #print(len(num_set))
        if len(num_set) == X:
            return i
    
    return -1

결과는 여기에
문제 좀 똑바로 읽자 제발(어째 수능때의 PTSD가..)

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

0개의 댓글