개발자일걸요..?

폰켓몬 본문

알고리즘코딩/Programmers

폰켓몬

Re_A 2021. 7. 24. 13:04
728x90
반응형

링크 : https://programmers.co.kr/learn/courses/30/lessons/1845

 

코딩테스트 연습 - 폰켓몬

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.

programmers.co.kr

(프로그래머스>코딩테스트연습>찾아라 프로그래밍 마에스터>폰켓몬)

 


 

<내가 한 코딩 1>

def solution(nums):
    answer = 0
    n = len(nums)
    setNum = list(set(nums))
    if (len(setNum)>=n//2):
        answer = n//2
    else:
        answer = len(setNum)
    return answer

 

 

<내가 한 코딩 2>

def solution(nums):
    answer = min(len(nums)//2, len(list(set(nums))))
    return answer

 

 


 

<풀이 근거>

 

  • 중요한 점은 "총 몇 마리인가?"와 "총 몇 종류인가?"이다.
  • 여기서 마리수는 주어진 배열 nums의 길이를 확인해서 알 수 있다.
  • 종류 수는 주어진 배열을 set으로 변형하여 중복을 없앤 후 길이를 확인하여 알 수 있다. 

 

만약 N마리 있을 경우-> 가져갈 수 있는 마리수는 N/2마리 = 가져갈 수 있는 최대 종류수도 N/2종류이다. 즉, N/2이상의 종류가 있어도 가져갈 수 있는 종류는 N/2종류가 되는 것이다.

반면, N마리가 있으나 종류수가 N/2보다 작을 경우, 최대 종류를 전부 가져갈 수 있다.

==>이 두 사항을 합쳐 고려해보면 N/2와 종류수 중 더 작은 값이 채택 된다.

반응형

'알고리즘코딩 > Programmers' 카테고리의 다른 글

문자열 다루기  (0) 2021.07.24
두 개 뽑아서 더하기  (0) 2021.07.24
로또의 최고 순위와 최저 순위  (0) 2021.07.24
숫자 문자열과 영단어  (0) 2021.07.23
신규 아이디 추천  (0) 2021.07.23
Comments