ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python] Codility Lesson 4-3. MissingInteger
    공부/알고리즘 2021. 7. 25. 19:10

     

    1. 100점받은 내가 작성한 코드 -> 코드를 보면 예외상황을 댐터진 곳 보수공사하듯 남이보면 얘 뭐하냐 싶을 정도로 덕지 덕지 작성되어 있다... 가성비 박살난 코드 및 난해하며 이런 식으로 작성하면 추가적인 예외상황이 있을때 코드를 수정하기도 뭣하다...

     

    대충 생각한 단계는

     

    1. 전달받은 list를 sort()해주자.

     

    2. 그런다음 for문을 돌리는데 음수일때는 continue, 양수일때는 여러 조건을 달아서 처리하자

     

    3. (여기서 문제발생) 위 두가지로 처리하니 예외상황 (끝이 1일때? 1이 아닐때? 음수만 있을때?) 결과적으로 이런 100점 받고도 불안한 사태에 이르럿다

     

    def solution(A):
        # write your code in Python 3.6
        A.sort()
        positive_count = False
        for i in range(len(A)):        
            if A[i] < 0:
                continue
            else:
                if positive_count == False:
                    if A[i] > 1:
                        return 1
                positive_count = True
                if i == len(A)-1:
                    if positive_count:
                        return A[-1] + 1                            
                if A[i] + 1 == A[i+1]:
                    continue
                elif A[i] == A[i+1]:
                    continue
                else:
                    return A[i] + 1
        return 1

     

     

    2. 다른사람이 작성한 것중 잘짠거 찾아보자 (출처 : https://sooho-kim.tistory.com/33)

     

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

    어 이쁘다...

     

    괜히 counting주제가 있는게 아닌것 같다...

     

    1. 전달 받은 list 중복제거 및 sort()

     

    2. missingdata를 1로 두고, list A 반복문 안에서 element 1을 만날 경우 missingdata +=1

     

    3. missingdata가 detecting 안될 경우 return missingdata

    728x90

    댓글

Designed by Tistory.