[프로그래머스/Python] 폰켓몬

minj-j·2022년 7월 27일
0

CodingTest

목록 보기
4/14

내가 풀이한 코드 (정답나옴) 🐿️
참고한 코드 https://iambeginnerdeveloper.tistory.com/164

def solution(nums):
    num_len = len(set(nums)) #중복되지 않은 폰켓몬의 종류
    result = int(len(nums)/2) #선택할 수 있는 폰켓몬의 수

    if result < num_len : //
        answer = result
    else :
        answer = num_len
    return answer

쉽게 생각할 수 있는 문제였다.
하지만 난 쉽게 생각하지 않았다 ㅎ..

파이썬의 set함수로 중복되지 않은 폰켓몬의 수를 구하고
선택할 수 있는 폰켓몬의 수는 폰켓몬 중에서 N/2마리를 가져가도 좋다 라고 했으니까
배열 nums의 수에서 2를 나누면 된다.

우리가 구해야 할 것은 최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택함 이니까
선택할 수 있는 폰켓몬 수set 함수로 중복되는 폰켓몬을 뺀 개수 보다 작으면
선택할 수 있는 폰켓몬 수 자체가 최대한 많은 종류의 폰켓몬을 선택할 수 있는 경우고
만약 선택할 수 있는 폰켓몬 수set 함수로 중복되는 폰켓몬을 뺀 개수와 같으면
set 함수로 중복되는 폰켓몬의 수 자체가 답이 된다.


🐿️ 안 읽어도 되는 사담

내가 코드 참고한 곳 블로거 분도 나랑 비슷하게 생각하셨다가
틀린 것 같았다

내가 처음 생각한 코드 (완벽 x 풀다 맘)

from itertools import combinations
nums = [3,1,2,3]
com = list(combinations(nums, 2))
print(com)

for i in com:
  print(i)
  print(i[0])
  for j in range(len(com)-1):
    if i[j] == i[j+1]:
      print("같다")

나는 문제를 깊게 생각하지 않고 폰켓몬을 뽑기 위한
여러가지 조합을 뽑아야 할 것 같아서 냅다 combination을 썼다.
근데 for문을 들어가면서 뭔가 잘못된 것 같다는 느낌이 들었다......

조합안의 수가 같은지 다른지를 어떻게 판단해 줘야 할지 모르겠고, -> 이게 패착이었다.
그 판단하는 과정이 level1 치고 너무 복잡한 것 같았기 때문이다.

그래서 결국 level1 부터 다른 분의 풀이를 참고하게 되었다.

근데 이게 어떻게 해시랑 관련이 있는지 모르겠다....

profile
minj-j`s Development diary!

0개의 댓글