전체 글(48)
-
알고리즘 - 베스트 앨범
해시맵의 벨류값에 리스트를 저장하는 방식으로 문제를 해결했다해당과정에서 따로 클래스를 선언하며 클래스 내부에서 재생횟수 별 내림차순과 고유번호별 오름차순으로 정렬되게끔 구현했고총 2개의 매시맵을 통해 구현했다.import java.util.*;class Solution { public int[] solution(String[] genres, int[] plays) { // 장르별 총 재생 횟수 HashMap totalPlayMap = new HashMap(); // 장르별 노래 리스트 HashMap> genreToSongMap = new HashMap(); // 노래 종류별 수 저장 for (in..
2025.10.29 -
알고리즘 - 폰켓몬
주어진 배열에서 배열의수/2개를 제한으로 가져가되 최대의 종류 개수를 선택하는 문제이다.중복을 없앨 수 있는 set을 사용해 접근했고 (내 알고리즘 풀이대로면 map을 사용해도 충분하다)nums 배열을 돌며 set에 존재하지않고 주어진 배열의수/2개보다 적다는 조건을 충족시켜주면 정답을 늘리는 방식으로 접근했다.import java.util.*;class Solution { public int solution(int[] nums) { int total = nums.length; int count = total / 2; HashSet set = new HashSet(); int pick = 0; int answer = 0; ..
2025.10.29 -
알고리즘 - 보석 쇼핑
주어진 보석 배열에서 각 보석별로 종류가 1개 이상 들어가있는 최소의 구간을 찾는 것 해시맵과 투포인터를 사용해서 현재 Hash맵에 있는 보석의 종류와 총 보석 종류 개수가 같을때 그 구간은 모든 종류의 보석을 포함하고 있는 것 import java.util.*;class Solution { public int[] solution(String[] gems) { // 보석 종류 개수 파악 HashSet set = new HashSet(); for (String gem : gems) { set.add(gem); } int totalGemCount = set.size(); ..
2025.10.28 -
알고리즘 - 합승 택시 요금
특정 지점까지 택시를 합승한 후 각자의 목표 지점으로 이동하는 비용을 최소화 하는 것이 문제는 모든 쌍의 최단거리가 필요함 -> 플로이드 워셜 비용 최소화 원리총 비용은 출발지S 부터 합승 종료지점 X까지의 합승비용 + 합승 종료지점 X에서 A까지의 거리 + 합승 종료지점 X에서 B까지의 거리X를 모든 노드에서 최소가 되게끔 해야됨. 플로이드-워셜 알고리즘은 합승 여부랑 관계 없이 그래프 안에서 모든 지점 간의 최단 거리를 계산해주는것-> 플로이드 워셜로 i->j로의 최단 거리들을 중간에 어떤 노드를 거치는게 빠를지, 그냥 가는게 빠를지를 다 계산해서 저장해줌 그럼 그 후 합승지점을 n까지 순회하며 해당 지점에서의 a b s로부터의 거리들을 합해서 계산해줌-> 그중 가장 작은 값이 최단거리 원래는 이중리..
2025.10.28 -
알고리즘 - 디스크컨트롤러
전체 작업들의 요청시간부터 종료까지 걸린 시간의 평균 반환하는 것 큐를 사용해서 모든 작업 요청을 요청 시간 순서로 저장우선순위 큐를 사용해서 소요시간이 가장 짧은 작업이 맨 위에 오도록 정렬 jobs를 순회하는 인덱스 변수와 처리된 작업 개수, 현재 시간들을 변수로 선언해서문제를 해결함. import java.util.*;class Solution { public int solution(int[][] jobs) { // jobs 배열에서 요청시간 기준으로 오름차순 Arrays.sort(jobs, (a, b) -> a[0] - b[0]); //작업시간 기준으로 오름차순 정렬 Queue pq = new PriorityQueu..
2025.10.24 -
알고리즘 - 기능 개발
각 기능이 배포되는 시간을 계산한 후 먼저 배포가 가능한 배포일을 기준으로 함께 배포될수 있는것들을 빼는 것최종적으로 각 배포마다 몇개의 배포가 진행되는지를 출력하는 것. 배포시간까지 남은 일수를 저장해둘 큐를 만들어 놓은 후해당 일자에 배포되는 것들의 개수를 카운트해서 최종적으로 배열에 저장하여 출력하는 출이 방식 사용 import java.util.*;class Solution { public int[] solution(int[] progresses, int[] speeds) { // 배포 시간 담을 큐 Deque deque = new ArrayDeque(); // 정답 리스트 List list = new ArrayList(); ..
2025.10.24