3-1 포켓몬

유태형·2022년 4월 28일
0

알고리즘 - Java

목록 보기
3/32

출처

해당 게시글은 [Java] 어서와! 자료구조 알고리즘은 처음이지?https://programmers.co.kr/learn/courses/13577를 간략히 요약한 게시글이며 모든 출처는 해당강의에 있습니다.




문제

문제 분석

포켓몬의 종류를 구하는 문제입니다. 즉 포켓몬의 갯수가 많아도 종류가 적으면 답이 적은 문제입니다.




풀이

포켓몬의 종류가 몇가지인지가 핵심이 되는 문제입니다. 중복을 없애야 하므로 HashMap을 사용하면 손쉽게 중복여부를 가려내고 종류만 얻을 수 있습니다. 종류의 갯수를 n1, 포켓몬수 /2를 n2변수에 저장하여 둘 중 적은 값을 출력합니다.



순서

  1. 포켓몬의 종류 구하기
  2. 포켓몬수 / 2 구하기
  3. 둘중 최솟값 구하기

포켓몬의 종류 구하기

Map<Integer, Integer> map = new HashMap<>();
for(int n : nums) map.put(n,0);
int n1 = map.keySet().size();

포켓몬수 / 2 구하기

int n2 = nums.length / 2;

둘중 최솟값 구하기

return Math.min(n1,n2);




코드

강의에서 소개된 간략한 풀이입니다.

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for(int n : nums) map.put(n,0);
        return Math.min(map.keySet().size(),nums.length/2);
    }
}



GitHub

제가 직적 풀은 자세한 풀이입니다.

https://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%5BJava%5D%20%EC%96%B4%EC%84%9C%EC%99%80%20%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%80%20%EC%B2%98%EC%9D%8C%EC%9D%B4%EC%A7%80/%ED%8C%8C%ED%8A%B82.List(%EB%A6%AC%EC%8A%A4%ED%8A%B8)/%ED%8F%AC%EC%BC%93%EB%AA%AC.java

profile
오늘도 내일도 화이팅!

0개의 댓글