일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- LV1
- zeros
- 온라인석사
- 알고리즘
- 딥러닝
- 코딩테스트
- 방송통신대학교
- mpnp
- 조지아텍
- C++
- leetcode
- 주정부이민
- 개발자
- EOI
- 컴퓨터과학과
- 위니펙
- omscs
- 프로그래머스
- machine learning
- 선형대수
- 기본
- LAA
- 머신러닝
- Plotting
- 캐나다 영주권
- Deep learning
- MATLAB
- 방통대
- 매트랩
- cpp
Archives
- Today
- Total
Byte by Byte
프로그래머스) 찾아라 프로그래밍 마이스터 c++ 본문
정렬하고, 달라지는 지점을 하나씩 더하면, 내가 고를 수 있는 방법의 가지수가 된다.
내가 고를 수 있는 수와 같으면 return.
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> nums)
{
int answer = 1;
sort(nums.begin(),nums.end());
for(int i =0; i < nums.size()-1; i++){
if(answer == (nums.size()/2)) return answer;
if(nums[i]!=nums[i+1]) answer++;
}
return answer;
}
unordered set을 왜 생각못했을까. 아래는 unordered set을 활용한 다른 사람의 풀이.
1. 중복을 허용하지 않는다는 stl의 특성을 잘 살렸다.
2. 내가 몰랐던 사실은, unordered set s을 선언할때, vector를 바로 받을 수 있다는 것.
3. 심지어 vector를 정렬하면서 전달가능 하다는 것.
#include <bits/stdc++.h>
using namespace std;
int solution(vector<int> nums) {
unordered_set<int> s(nums.begin(), nums.end());
return min(nums.size() / 2, s.size());
}
좀 어려운거 풀어야하는데.. 일단 기본이 최고인것 같아서 강의하나 듣고 천천히 진행하기로함.
'개발 로그 > 알고리즘' 카테고리의 다른 글
프로그래머스) 실패율 c++ (0) | 2021.09.02 |
---|---|
프로그래머스) 행렬의 덧셈. 파이썬 (0) | 2021.09.01 |
프로그래머스) 완주하지못한 선수 c++ (0) | 2021.08.27 |
프로그래머스 - 직업군 추천하기 C++ (0) | 2021.08.23 |
크레인 인형뽑기 c++풀이 (0) | 2021.08.23 |