코딩테스트/프로그래머스

프로그래머스 1LV C++ 폰켓몬

sky하연 2024. 3. 13. 23:26
#include <vector>
#include <iostream>
using namespace std;

int solution(vector<int> nums)
{
    int Pick = nums.size()/2;
    int count = 1;
    int answer = 0;

    int n[nums.size()];

    n[0] = nums[0];
    for(int i = 0; i < nums.size(); i++){
        for(int j = 0; j < i; j++){
            if(n[j] == nums[i]){
                j = i+10;
            }
            if(j+1 == i) {
                n[j+1] = nums[i];
                count++;
            }
        }}

    if(Pick < count){
        answer = Pick;
    }
    else{
        answer = count;
    }
    cout << count;
    return answer;
}

나는 이 문제를 풀기위해 배열을 하나 더 선언하여

가장 처음인 n[0]에 nums[0]을 넣어주고

앞에서부터 하나씩 비교해가며 같은것이 하나라도 있다면

for문을 빠져나가게 코딩하고

만약 끝까지 하나도 안겹쳤다면

뒤 번호에 안겹친 숫자를 넣어주고 count를 증가시켜줬다.

그리고 마지막에 Pick의 수가 count보다 작다면

Pick이 답이 되도록 아니라면 count가 답이 되도록 작성하였다.

 

프로그래머스의 다른 분들 풀이를 보니 이것보다 더 간결하고 깔끔한게 많았다

나도..언젠가 그러겠지