programmers.co.kr/learn/courses/30/lessons/1845
간단한 문제로 포켄몬 종류 번호크기만큼의 배열을 만들어서 해결하거나 set을 이용할 수 있습니다.
둘다 nums의 길이만큼만 돌면되지만
배열은 고정길이로 일정 수준의 메모리를 사용해야합니다.
Set은 내부 로직에서 중복여부를 체크하고 추가하는 연산이 진행됩니다.
1. 배열
문제 중
폰켓몬의 종류 번호는 1 이상 200,000 이하의 자연수로 나타냅니다.
을 따라서 200001 길의 의 배열을 만들어서 nums를 순회하면서
1마리도 없는 경우 카운트를 진행하게 하고
마지막에 answer가 N/2 보타 크면 N/2로 초기화하였습니다.
class Solution {
public int solution(int[] nums) {
int[] counts = new int[200001];
int answer = 0;
for(int i = 0; i < nums.length; i++) {
if(counts[nums[i]] == 0) {
answer++;
}
counts[nums[i]]++;
}
if(answer > nums.length / 2) {
answer = nums.length / 2;
}
return answer;
}
}
2. Set
Set을 만들고 nums을 순회하면서 포켓몬의 번호를 추가한 뒤 set의 길이로 값을 구하는 방법
import java.util.*;
class Solution {
public int solution(int[] nums) {
HashSet<Integer> set = new HashSet<>();
for(int i = 0; i < nums.length; i++) {
set.add(nums[i]);
}
int answer = set.size();
if(answer > nums.length / 2) {
answer = nums.length / 2;
}
return answer;
}
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 키패드 누르기 문제 (자바) (0) | 2021.05.04 |
---|---|
프로그래머스 - 자동완성 문제 (자바) (0) | 2021.05.02 |
프로그래머스 - 다단계 칫솔 판매 문제 (자바) (1) | 2021.04.29 |
프로그래머스 - 로또의 최고 순위와 최저 순위 문제 (자바) (0) | 2021.04.27 |
프로그래머스 - 행렬 테두리 회전하기 문제 (자바) (0) | 2021.04.27 |