#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가 답이 되도록 작성하였다.
프로그래머스의 다른 분들 풀이를 보니 이것보다 더 간결하고 깔끔한게 많았다
나도..언젠가 그러겠지
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 LV1 C++ 두 정수 사이의 합 풀이 (0) | 2024.04.16 |
---|---|
프로그래머스 C++ LV1 나누어 떨어지는 숫자 배열 풀이 (0) | 2024.04.05 |
프로그래머스 1LV C++ 같은 숫자 싫어 (0) | 2024.03.17 |
프로그래머스 1LV C++ 가운데 글자 가져오기 풀이 (0) | 2024.03.15 |
프로그래머스 1LV C++ 2016년 문제 풀이 (0) | 2024.03.14 |