오늘의 학습 키워드
https://school.programmers.co.kr/learn/courses/30/lessons/1845
민균이의 비밀번호
- 자바, 프로그래머스 > 연습문제
공부한 내용 본인의 언어로 정리하기
문자답안
import java.util.*;
class Solution {
public int solution(int[] nums) {
int counter = nums.length/2;
Set<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length; i++) {
if (set.size() >= counter) {
return set.size();
}
set.add(nums[i]);
}
return set.size();
}
}
문제 해석
이 문제는 주어진 포켓몬 종류에 따라 경우의 수를 계산하는 것 같지만 경우의 수를 다 고려할 필요는 없다. 조건을 보면 총 N마리의 포켓몬 중 N/2마리를 가져가도 된다고 한다.
이런 경우 4마리면 최대 2종류이고 6마리이면 최대 3종류이다. 그렇기 때문에 set을 이용해 중복을 제외한 종류를 체크하며 N/2와 같거나 커지면 return 되게 하면 된다.
if (set.size() >= counter) {
return set.size();
}
만약 counter보다 작으면 마지막 return 에서 값을 나타내면 된다.
오늘의 회고
이 문제는 해시 연습문제 중 하나다. 그걸 알고 풀어서 쉽게 접근할 수 있었는데 없었으면 경우의 수를 찾을 수도 있었을 것 같다.
'TIL' 카테고리의 다른 글
[TIL-24/11/08] 99클럽 코테 스터디 12일차 TIL - 스택(백준) -JAVA (1) | 2024.11.09 |
---|---|
[TIL-24/11/07] 99클럽 코테 스터디 11일차 TIL - 완주하지 못한 선수 -JAVA (3) | 2024.11.07 |
[TIL-24/11/05] 99클럽 코테 스터디 9일차 TIL - 민균이의 비밀번호-JAVA (4) | 2024.11.05 |
[TIL-24/11/03] 99클럽 코테 스터디 7일차 TIL - 전주 듣고 노래 맞히기 (1) | 2024.11.03 |
[TIL-24/11/02] 99클럽 코테 스터디 6일차 TIL - 할리갈리 (1) | 2024.11.02 |