[Algorithm🧬] 폰켓몬

또상·2021년 12월 24일
0

Algorithm

목록 보기
17/133
post-thumbnail

문제 / 풀이.py

def solution(nums):
    # 뽑을 수 있는 포켓몬 수 저장
    pokemon_count = len(nums) / 2
    # 포켓몬 종류만 남김!
    pokemon = list(set(nums))
    
    # 뽑을 수 있는 포켓몬 수보다 포켓몬 종류가 많으면
    # 다 다른 포켓몬을 뽑으면 되니까 뽑을 수 있는 포켓몬 수가 종류 최대.
    # 아니면 있는 포켓몬 종류를 다 뽑는게 최대.
    if (len(pokemon) >= pokemon_count):
        return pokemon_count
    else:
        return len(pokemon)

set이 있어서 너무 쉽게 풀었는데, set이 없는 C언어를 썼다면..?

배열을 정렬한 다음에 for문을 돌면서 새로운 배열에 앞에부터 저장을 하는데, 안에 중첩 for문으로 배열을 탐색해서 해당 배열에 이미 저장된 종류 번호라면 저장을 안하는 식으로 구현을 했을 것 같다.

// 그냥 로직만 적당히 짠거라서 잘 될지는 모르겠다!
// n 은 nums의 길이
// 일단 100 으로 가정..
int set[100] = {0};
set[0] = nums[0];
int count = 0;
for (int i = 1; i < n; i++) {
    count = 0;
    for(int j = 0; j < i; j++) {
        count++;
        if (nums[i] == set[j]) {
            break;
        }
    }
    if (count+1 == j) {
        set[i] = nums[i];
    }
}

입력이 200,000까지 들어올 수 있어서 C언어가 선택지에도 없는거 아닐까?

profile
0년차 iOS 개발자입니다.

0개의 댓글