본문 바로가기

반응형

Java

(376)
[LeetCode- Part. 3] 5. Province의 수 (+DFS) https://leetcode.com/problems/number-of-provinces/ Number of Provinces - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 연결된 도시를 찾는다. -> 직접연결과 간접연결 2. 초기값을 전달한 후, 초기값에서 연결된 모든 도시를 찾는다. 3. 연결된 모든 도시 찾기 종료 후, 다음 도시들은 모두 세면서 연결되어있는지 찾는다. class Solution { static int answer; public i..
[LeetCode- Part. 3] 4. 숫자를 영어 단어로 변환 # (+분할과 정복) https://leetcode.com/problems/integer-to-english-words/ Integer to English Words - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 참고 자료 https://and-some.tistory.com/897 [LeetCode- Ch3. 배열] 5. 빗물 담기 # [+ 분할과 정복] https://leetcode.com/problems/trapping-rain-water/ Trapping Rain Water..
5. 퍼즐게임 (+ 2차원 DP) // 퍼즐게임 // 2장의 카드가 남을 때 까지 반복해서 뽑는다 -> (뽑은 카드)*(뽑은 왼쪽 카드)*(뽑은 오른쪽 카드) 결과를 더한다. // 나열된 카드 중에서 맨 왼쪽 카드와 맨 오른쪽 카드는 뽑아서는 안된다. // 맨 마지막 동작을 하고 나면, 두 장의 카드가 남는다. // 당신의 목표는 동작을 모두 하고나서, 각 동작의 점수의 합이 최소가 되도록 동작 +) 세련된 풀이 : 동적계획법 dy[i][j] : i번째부터 j번째까지의 까지의 부분수열을 게임동작했을 때 얻을 수 있는 최소 점수 package Q5; import java.util.*; class Main2 { public int solution(int[] nums){ int n=nums.length; int[][] dy = new int[..
4. 사과 먹기 (+BFS) DFS는 스택을 이용한 깊이 우선 탐색 BFS는 큐를 이용한 너비 우선 탐색 DFS를 이용한 풀이 : N이 커지면, 타임리밋 발생 -> BFS 이용하도록 변경 package Q4; public class Main { public static void main(String[] args) { // 하루 동안 먹을 수 있는 사과의 개수입니다. // 1) 사과 한 개를 먹는다. // 2) 현재 있는 사과의 개수가 2로 나누어 떨어지는 개수라면 그 절반(사과개수 / 2)을 먹는다. 3) 현재 있는 사과의 개수가 3으로 나누어 떨어진다면 (사과개수 / 3) * 2 개의 사과를 먹는 다. // 현수에게 N개의 사과가 주어지면 현수가 위 3가지 중 하나를 선택해서 먹을 때 최소 몇 일만 에 사과를 모두 먹을 수 있는지..
3. 그래프 최대점수 (+DFS) +) 세련된 풀이 : DFS 각 노드를 무한 반복해, ch 배열로 첫 번째로 방문 했는지를 확인 import java.util.*; class Edge { public int vex; public int cost; Edge(int vex, int cost) { this.vex = vex; this.cost = cost; } } class Main { public int answer=0; public ArrayList graph; public int[] ch; public void DFS(int cur, int time, int sum, int[] nums){ if(time
2. 카드 점수 (+슬라이딩 윈도우) DFS 이용한 풀이 package Q2; import java.util.Arrays; public class Main { //카드 점수 //카드 종류와 뽑을 카드 수가 주어지면 //가장 왼쪽 또는 가장 오른쪽 끝에 있는 카드를 가져온다. //가져온 카드의 총 합이 가장 큰 경우를 출력 public static void main(String[] args) { // int[] nums={3,2,5,6,7,1}; // int k=3; //int[] nums={3, 1, 4, 5, 4, 1, 2, 5}; //int k=5; int[] nums={6, 7, 1, 3, 1, 4, 3, 1, 1, 5, 4, 1, 2, 5}; int k=10; System.out.println(solve(nums, k)); } sta..
1. 빈도수 정렬 (+Hash) package Q1; import java.util.*; public class Main { //1. 빈도수 정렬 public static void main(String[] args) { //String str="aaAAcccbbbBB"; String str="kdkDKKGkdkgks"; solve(str); } public static String solve(String str){ Map map = new HashMap(); String answer=""; for(char c: str.toCharArray()){ map.put(c, map.getOrDefault(c, 0)+1); } //Map.Entry로 List만들어 정렬하기 List entryList= new LinkedList(map.entryS..
[LeetCode- Part. 3] 3. 가장 느린 키 (+ 초기값 이용, arr[i]-arr[i-1]) https://leetcode.com/problems/slowest-key/submissions/ Slowest Key - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 문자의 경우 대소 비교가 가능하다. -> 누르는 시간이 같을 경우 사전순으로 더 큰 키 선택 2. 동일한 문자가 여러번 등장할 수 있으므로 해시맵 사용 class Solution { public char slowestKey(int[] releaseTimes, String keysPresse..

반응형