반응형
문제
- 문제 링크: 폰켓몬
해설
- 자료구조:
- 시간복잡도:
(풀이과정)
1)
2)
3)
4)
코드
(C언어)
solution 1)
더보기
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(C++)
solution 1)
더보기
#include <vector>
#include <set>
using namespace std;
int solution(vector<int> nums)
{
int answer = nums.size()/2;
int cnt = 0;
set<int> s;
for (size_t i = 0; i < nums.size(); ++i){
s.insert(nums[i]);
}
cnt = s.size();
if (cnt < answer)
answer = cnt;
return answer;
}
solution 2)
더보기
#include<>
solution 3)
- nums를 집합으로 변환: O(N)
더보기
#include <unordered_set>
#include <vector>
using namespace std;
int solution(vector<int> nums)
{
int answer = 0;
// s는 nums의 중복값을 제거한 집합
unordered_set<int> s(nums.begin(), nums.end());
// nums/2의 개수와 s의 개수 중 작은 값을 반환
answer = min(nums.size()/2, s.size());
return answer;
}
(C#)
solution 1)
더보기
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(Java)
solution 1)
- N: nums의 길이
- nums를 해시셋으로 변환: O(N)
- 폰켓몬 수를 구하고 선택: O(1)
- 최종 시간 복잡도: O(N)
더보기
import java.util.Arrays;
import java.util.HashSet;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] nums) {
// nums 리스트에서 중복을 제거한 집합(set)을 구함
HashSet<Integer> set = Arrays.stream(nums).boxed().collect(Collectors.toCollection(HashSet::new));
// 폰켓몬의 총 수
int n = nums.length;
// 선택할 폰켓몬의 수
int k = n / 2;
// 중복을 제거한 폰켓몬의 종류 수와 선택할 폰켓몬의 수 중 작은 값 변환
return Math.min(k, set.size());
}
}
solution 2)
더보기
import java.util.Arrays;
class Solution {
public int solution(int[] nums) {
return Math.min((int) Arrays.stream(nums).distinct().count(), nums.length / 2);
}
}
solution 3)
더보기
#include<>
(Python)
solution 1)
- N: nums의 길이
- nums를 set()으로 변환: O(N)
- 폰켓몬 수를 구하고 선택할 때의 시간복잡도: O(1)
- 최종 시간 복잡도: O(N)
더보기
def solution(nums):
num_set = set(nums) # nums 리스트에서 중복을 제거한 집합(set)을 구함
n = len(nums) # 폰켓몬의 총 수
k = n // 2 # 선택할 폰켓몬의 수
# 중복을 제거한 폰켓몬의 종류 수와 선택할 폰켓몬의 수 중 작은 값 반환
return min(k, len(num_set))
solution 2)
더보기
def solution(nums):
answer = 0
max_num = len(nums)//2
set_num = len(set(nums))
if (set_num > max_num):
answer = max_num
else:
answer = set_num
return answer
solution 3)
더보기
import
(JavaScript)
solution 1)
- N: nums의 길이
- nums를 set()으로 변환: O(N)
- 폰켓몬 수를 구하고 선택: O(1)
- 최종 시간 복잡도: O(N)
더보기
function solution(nums) {
const numSet = new Set(nums); // nums 배열에서 중복을 제거한 집합을 구함
const n = nums.length; // 폰켓몬의 총 수
const k = n / 2; // 선택할 폰켓문의 수
// 중복을 제거한 폰켓몬의 종류 수와 선택할 폰켓몬의 수 중 작은 값을 반환
return Math.min(k, numSet.size);
}
solution 2)
더보기
import
solution 3)
더보기
import
반응형
'1-4. 코딩테스트 문제집(진행중) > PCCP(Lv1)' 카테고리의 다른 글
[PCCP] Lv1: 정수 내림차순으로 배치하기(12933) 해설 (0) | 2024.12.25 |
---|---|
[PCCP] Lv1: 문자열 내 마음대로 정렬하기(12915) 해설 (0) | 2024.12.25 |
[PCCP] Lv1: 신고 결과 받기(92334) 해설 (0) | 2024.12.24 |
[PCCP] Lv1: 완주하지 못한 선수(42576) 해설 (0) | 2024.12.24 |
[PCCP] Lv1: 카드 뭉치(159994) 해설 (0) | 2024.12.24 |