ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Lesson 4 Counting Elements MissInteger 나만의풀이
    카테고리 없음 2021. 6. 2. 10:07

    문제

    This is a demo task.
    Write a function:
    def solution(A)
    that, given an array A of N integers, returns the smallest positive integer (greater than 0) that does not occur in A.
    For example, given A = [1, 3, 6, 4, 1, 2], the function should return 5.
    Given A = [1, 2, 3], the function should return 4.
    Given A = [−1, −3], the function should return 1.
    Write an efficient algorithm for the following assumptions:
    N is an integer within the range [1..100,000];each element of array A is an integer within the range [−1,000,000..1,000,000].

    대충 해석하자면 A는 N개의 정수가 있는데 0보다 큰 가장 작은수를 반환한다.

    [1, 3, 6, 4, 1, 2]가 있으면 return 5

     

     

    첫 번째 시도

    별 다른 생각 없이 시도했던 첫번째 시도

    어마어마하게 많이 틀렸다... 

    def solution(A):
        A = list(set(A))
    
        if A[-1]>0:
            if len(A)==1:
                return A[0]+1
            now_val = -1000000000
            for i in A:
                if i>0:
                    if now_val == -1000000000:
                        now_val = i
                    else:
                        if i-now_val>1:
                            return now_val+1
                        now_val = i
            return A[-1]+1
    
        return 1

     

     

     

    두 번째 시도 이후 많은 시간이 지났다..

    결국 못 풀었다 ㅋㅋㅋ

    왜일까요? 문제를 찾다가 결국 못 찾아서 다른 사람들의 풀이를 봤다.

    이렇게 간단하게 풀다니... 그리고 내껄 봤다. 내 식대로 만들어서 풀어봤는데 또 틀렸다...

    알고보니 sort를 안해서 틀린 문제 ㅋㅋ

    list(set(A)) 하고 프린트 했더니 정렬되어 보이길래 정렬 안해도 되는줄 알았다.

    그러나 보이기만 그렇지 실상 정렬이 되어있지 않다는거... 잊지 말아야지

    def solution(A):
        A = list(set(A))
        A.sort()
        min = 1       
        for i in A:
            if i==min:
                min += 1
        return min

     

     

     

    댓글

Designed by Tistory.