반응형
https://school.programmers.co.kr/learn/courses/30/lessons/1845
1) 내가 구현한 코드
import java.util.*;
import java.util.stream.*;
class Solution {
public int solution(int[] nums) {
int getNum = nums.length/2; //가질 포켓몬수
//Set<Integer> set = new HashSet<>();
//for(int num:nums) set.add(num);
Set<Integer> set = Arrays.stream(nums).boxed().collect(Collectors.toSet());
//방법1.
if(set.size() > getNum)return getNum;//뽑을 갯수가 가진것보다 작을 때
return set.size(); //뽑을 갯수가 가진것보다 클 때
// 방법2. 고를 수 있는 최대 종류 수는 전체 폰켓몬 종류 수와 getNum 중 작은 값
//return Math.min(set.size(), getNum);
}
}
2) 오늘의 학습 키워드
- HashSet을 통한 중복 제거
- HashSet은 중복을 제거하고, 전체 폰켓몬 종류의 개수를 파악하는 데 유용했다.
- 이 문제에서는 최대한 다양한 폰켓몬을 선택해야 하므로 HashSet으로 중복된 종류를 제거하는 것이 가장 효율적이었다.
- Math.min()
- Math.min()을 사용해 고를 수 있는 폰켓몬의 최대 종류 수를 계산했다.
3) 오늘의 회고
문제점
- 폰켓몬 종류를 최대한 다양하게 선택할 수 있는 방법을 찾아야 했다.
- 중복을 허용하지 않는 HashSet을 사용하여 전체 종류 수를 먼저 구한 후,
- 가져갈 수 있는 폰켓몬 수(N/2)와 종류의 수 중 더 작은 값을 결과로 반환하는 방식을 생각했다.
해결법
- HashSet과 Math.min()을 사용한 방식으로 문제를 해결했다.
- HashSet을 이용해 중복된 폰켓몬 번호를 제거해 종류 수를 빠르게 구할 수 있었고,
- Math.min()을 통해 N/2와 종류 수 중 작은 값을 비교하여 필요한 결과를 얻을 수 있었다.
새롭게 알게 된 점
- 중복을 제거하고 고유한 값의 개수를 구할 때는 HashSet이 매우 유용하다는 것을 다시 깨달았다.
- HashSet을 활용해 필요한 조건을 만족할 수 있어 코드의 간결성을 높일 수 있었다.
내일의 학습 목표
- 효율적인 자료구조 사용과 함께, 다양한 문제 해결을 위한 알고리즘 연습을 진행할 예정이다.
- 특히 자주 쓰이는 Set, Map과 관련된 문제를 더 다뤄볼 계획이다.
4) 추가 문제
미들러 - 특정 거리의 도시 찾기
https://www.acmicpc.net/problem/18352
챌린저 - 좋다
반응형
'coding_test' 카테고리의 다른 글
[99클럽 4기 코테 스터디 TIL 11일차 보너스문제] 회사에 있는 사람 (feat. 해시맵) (0) | 2024.11.08 |
---|---|
[99클럽 4기 코테 스터디 TIL 11일차] 완주하지 못한 선수 (feat. HashMap) (1) | 2024.11.08 |
[99클럽 4기 코테 스터디 TIL 9일차] 민균이의 비밀번호 (feat. HashSet, StringBuilder) (0) | 2024.11.06 |
[99클럽 4기 코테 스터디 TIL 8일차] 근무 지옥에 빠진 푸앙이 (Small) (feat. 해시맵) (3) | 2024.11.05 |
[99클럽 4기 코테 스터디 TIL 7일차] 전주 듣고 노래 맞히기 (feat. 해시맵) (1) | 2024.11.03 |