쌓고 쌓다

[프로그래머스] 포켓몬 C++ 풀이 본문

알고리즘/프로그래머스

[프로그래머스] 포켓몬 C++ 풀이

승민아 2022. 7. 2. 13:57

 

https://programmers.co.kr/learn/courses/30/lessons/1845?language=cpp# 

 

코딩테스트 연습 - 폰켓몬

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

programmers.co.kr

 

전체 코드

#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> nums)
{
    int answer = 0;
    bool visit[200001];
    fill(visit,visit+200001,false);
    
    for(int i=0;i<nums.size();i++)
    {
        if(visit[nums[i]]==false&&answer+1<=nums.size()/2)
        {
            visit[nums[i]]=true;
            answer++;
        }
        
    }
    
    
    return answer;
}

 

다들 set이나 map을 이용해 풀었던데 혹시 bool 배열을 통해 풀려면 아래의 주의 사항을 지켜야한다.

안그러면 통과를 못한다.

 

주의 사항

아래와 같이 bool 배열을 memset이나 fill을 통해 초기화시켜 주어야 한다.

bool visit[200001];
fill(visit,visit+200001,false);

안 그러면 20만 번째까지 false로 초기화가 안 되어 있기에 테스트 케이스가 통과가 안된다.

Comments