[프로그래머스] Lv.1 폰켓몬

Tony Kim·2022년 1월 16일
0
post-thumbnail

[프로그래머스]

Lv.1 폰켓몬

1.문제

짝수(N)개의 숫자들중 N/2개를 뽑을때 최대한 다양한 숫자가 포함될 경우 몇개의 숫자가 포함되는지 구하는 문제
input 짝수개의 숫자가 포함된 배열 nums
output 최대로 다양한 숫자가 포함되었을때 숫자 종류의 개수

2. 풀이

집합 set을 통해 중복되는 숫자를 없애고 뽑아야하는 개수(배열의 길이/2)와 비교하여 return

3. 코드

def solution(nums):
    l = len(nums) / 2
    newnums = set(nums)
    if len(newnums) > l:
        return l
    else:
        return len(newnums)

모범코드1

def solution(ls):
    return min(len(ls)/2, len(set(ls)))

모범코드2

def solution(nums):
    kind = []
    answer = int(len(nums)/2) # 3
    for num in nums:
        if num not in kind:
            kind.append(num)
    result = len(kind) if answer > len(kind) else answer 
    return result

주의)

  • list 중복을 제거하는 방법 두 가지 알아두기 (set, for)
    for의 경우 시간이 더 오래걸리기때문에 set 권장
  • if 대신 min
profile
Back-end-dev

0개의 댓글