반응형
문제
- 문제 링크: 귤 고르기
해설
- 자료구조:
- 시간복잡도:
(풀이과정)
1)
2)
3)
4)
코드
(C언어)
solution 1)
더보기
solution 1
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(C++)
solution 1)
더보기
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(C#)
solution 1)
더보기
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(Java)
solution 1)
- N: tangerine의 길이
- 해시맵으로 개수를 구하고 리스트로 만들어서 정렬: O(NlogN)
- 반복문은 최악의 경우 모든 원소를 순회: O(N)
- 최종 시간 복잡도: O(NlogN)
더보기
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
class Solution {
public int solution(int k, int[] tangerine) {
// 귤의 개수를 세는 HashMap 객체 생성
HashMap<Integer, Integer> map = new HashMap<>();
for (int i : tangerine) {
map.put(i, map.getOrDefault(i, 0) + 1);
}
// 개수를 내림차순으로 정렬
ArrayList<Integer> sortedCounts = new ArrayList<>(map.values());
sortedCounts.sort(Collections.reverseOrder());
int numTypes = 0; // 현재까지의 종류 수
int countSum = 0; // 현재까지의 귤 개수 합
for (int count: sortedCounts) {
countSum += count;
numTypes++;
// 귤 개수 합이 k 이상이 되는 순간 종료
if (countSum >= k)
break;
}
return numTypes;
}
}
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(Python)
solution 1)
- N: tangerine의 길이
- Counter를 만들고 정렬: O(NlogN)
- 반복문은 최악의 경우 모든 원소를 순회: O(N)
- 최종 시간 복잡도: O(NlogN)
더보기
from collections import Counter
def solution(k, tangerine):
# 귤의 개수를 세는 Counter 객체 생성
counter = Counter(tangerine)
# 개수를 내림차순으로 정렬
sorted_counts = sorted(counter.values(), reverse=True)
num_types = 0 # 현재까지의 종류 수
count_sum = 0 # 현재까지의 귤 개수 합
for count in sorted_counts:
count_sum += count
num_types += 1
# 귤 개수 합이 k 이상이 되는 순간 종료
if count_sum >= k:
break
return num_types
solution 2)
더보기
import
solution 3)
더보기
import
(JavaScript)
solution 1)
- N: tangerine의 길이
- counter를 만들고 정렬: O(NlogN)
- 반복문은 최악의 경우 모든 원소를 순회: O(N)
- 최종 시간 복잡도: O(NlogN)
더보기
function solution(k, tangerine) {
// 귤의 개수를 세는 counter 오브젝트 생성
const counter = {};
for (const t of tangerine) {
counter[t] = (counter[t] || 0) + 1;
}
// 개수를 내림차순으로 정렬
const sortedCounts = Object.values(counter).sort((a, b) => b - a);
let numTypes = 0; // 현재까지의 종류 수
let countSum = 0; // 현재까지의 귤 개수 합
for (const count of sortedCounts) {
countSum += count;
numTypes += 1;
// 귤 개수 합이 k 이상이 되는 순간 종료
if (countSum >= k) {
break;
}
}
return numTypes;
}
solution 2)
더보기
import
solution 3)
더보기
import
반응형
'1-4. 코딩테스트 문제집(진행중) > PCCP(Lv2)' 카테고리의 다른 글
[PCCP] Lv2: 2xn 타일링(12900) 해설 (0) | 2024.12.25 |
---|---|
[PCCP] Lv2: 피보나치수(12945) 해설 (0) | 2024.12.25 |
[PCCP] Lv2: 구명보트(42885) 해설 (0) | 2024.12.25 |
[PCCP] Lv2: 튜플(64065) 해설 (0) | 2024.12.25 |
[PCCP] Lv2: 가장 큰 수(42746) 해설 (0) | 2024.12.25 |