본문 바로가기
Coding Test/Codility

[ codility 코딜리티 ] Lesson 4 MissingInteger Python 파이썬 풀이

by SteadyForDeep 2021. 4. 17.
반응형

 

// 문제 요약

 

N개의 정수로 구성된 배열 A를 받으면

A에 속해있지 않은 양의 정수 중

최소값을 구하는 함수를 짜라.

 

 

// 물제 풀이

 

문제가 간단하다.

풀이도 간단할지 한번 보자.

 

우선은 양의 정수 중에서 최소값을 구하므로

A의 최대값이 음수인 경우는

무조건 1이 return되어야 한다.

 

그리고 중복된 값들은 그냥 지나가도 되므로

Counter의 key만을 이용할 수 있다는 것을 알 수 있다.

 

 

코드부터 한번 보자.

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
import collections
import sys

def solution(A):
    # write your code in Python 3.6
    # 1. All elements is negative.
    if max(A) <= 0:
        return 1

    nums = [n for n in range(1, max(A) + 1 + 1)]
    counted = collections.Counter(A)
    for key in counted.keys():
        if key <= 0:
            continue
        else:
            nums[key - 1] = sys.maxsize

    return min(nums)

이번 역시 MinMax problem 이므로

sys.maxsize를 사용해주었다.

 

사실 if 문의 continue 부분은

조건을 반대로 걸어서 없애도 되는 부분인데

가독성을 위해서 남겨두었다.

 

list comprehension, sys, collections 등 많은 요소가

복합적으로 작용된 좋은 문제다.

 

반응형

댓글