알고리즘/해시 4

프로그래머스 - 의상(Java)

해시를 잘 이용하면 어려운 문제는 아니다. 저번에 풀었던 프로그래머스 - 완주하지 못한 선수 문제에서 해시맵의  getOrDefault 메서드를 이용해서 키가 해시맵에 삽입된 횟수를 계산하는 방식이 떠올라서 이번 문제도 이를 이용하여 풀었다.https://developerwoohyeon.tistory.com/155 프로그래머스 - 완주하지 못한 선수(Java)해시맵 클래스가 제공하는 함수를 적절히 사용해야 해시를 활용하여 풀 수 있었던 문제였다 정렬을 활용하여 검색import java.util.*;class Solution { public String solution(String[] participant, String[] completion) {developerwoohyeon.tistory.com 문제 ..

알고리즘/해시 2025.01.08

프로그래머스 - 전화번호 목록(Java)

문제 이해는 쉬웠으나 시간복잡도를 고려하면서 구현을 하려니 어려웠다. 처음에는 배열의 숫자들을 정수형으로 변형하고, 순회하며 자릿수를 체크하고 그 뒤의 숫자들의 처음부터 차릿수 까지의 숫자가 일치하면 answer를 false로 바꾸면 되겠다 싶어 구현했지만 고려하지 못한 케이스도 있고 시간복잡도 때문에 오답이 생기는 케이스가 생겼다. 고려하지 못한 부분각 숫자의 최대 자리수가 20이므로 이경우 정수형으로 변환 불가시간 복잡도 O(N^2)import java.util.*;class Solution { public boolean solution(String[] phone_book) { boolean answer = true; int[] nums = new int[..

알고리즘/해시 2025.01.06

프로그래머스 - 완주하지 못한 선수(Java)

해시맵 클래스가 제공하는 함수를 적절히 사용해야 해시를 활용하여 풀 수 있었던 문제였다 정렬을 활용하여 검색import java.util.*;class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; Arrays.sort(participant); Arrays.sort(completion); for(int i=0; iparticipant 배열과 completion 배열에 있는 이름을 오름 차순으로 정렬한다.두 배열을 순회 하면서 participant의 똑같은 위치에 있는 completion배열의 이름과 같지 않..

알고리즘/해시 2025.01.05

프로그래머스 - 포켓몬(Java)

이 문제를 풀때 가장 핵심이 되었던 알고리즘은 해시맵에서 키가 중복이 되면 안된다는 것이었다. 만약 키를 중복해서 해시맵에 삽입하면 키가 중복되어 추가되는 것이 아닌 value값만 갱신된다. 문제 이해 우선 포켓몬의 종류 갯수를 알아야한다. 이를 알기 위해서는 중복된 값을 제거하여 각 포켓몬의 수를 알아내면 되는데 나는 이 과정을 해시를 이용하여 해결하였다.  문제 해결  for(int i=0; i  이러면 중복이 제거된 상태의 배열을 해시 맵에서 얻을 수 있다.  여기서 해시맵의 크기는 중복이 제거된 포켓몬의 수를 뜻한다.  if(map.size()==(nums.length)/2){ answer=map.size(); } else if(map.size() 최대..

알고리즘/해시 2025.01.04