새소식

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

[C++] 포켓몬

  • -

[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


[문제 풀이]

처음에 백트래킹을 써야하나 헷갈렸던 문제.

하지만 다시 생각해보니 생각보다 쉽게 해결이 되었다.

우선, set을 써서 중복값을 제거한 key value값을 얻자.

그렇게 값을 얻은 크기의 2배가 포켓몬 숫자보다 적다면 크기를 return 하고 아니라면 포켓몬 숫자의 / 2를 한 값을 return 하자.


[코드]

#include <vector> #include <set> #include <iostream> using namespace std; int solution(vector<int> nums) { int answer = 0; set<int> s(nums.begin(),nums.end()); //set을 써서 중복값을 제거하였다. if(s.size() * 2 <= nums.size()){ // 만일 중복체크한 set 값의 2배가 포켓몬 숫자보다 작다면 answer = s.size(); //답은 중복체크한 값 } else if(s.size() * 2 > nums.size()){ //만일 아니라면 answer = nums.size() / 2; //답은 포켓몬 숫자 / 2 } return answer; }
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.