Algorithm

import java.util.HashMap;public class MapGetOrDefaultEx { public static void main(String arg[]) { String [] alphabet = { "A", "B", "C" ,"A"}; HashMap hm = new HashMap(); for(String key : alphabet) hm.put(key, hm.getOrDefault(key, 0) + 1); System.out.println("결과 : " + hm); // 결과 : {A=2, B=1, C=1} }} for(String key : alphabet) hm.put(key, hm.getOrDefault(ke..
https://www.acmicpc.net/problem/1647 1647번: 도시 분할 계획 첫째 줄에 집의 개수 N, 길의 개수 M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 www.acmicpc.net solve package GOLD; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; // 크루스칼 알고리즘 // 입력을 받아서 전체적으로 ..
https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 동적 계획법 복잡한 문제를 여러개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법. 메모리제이션을 사용한다. 메모리제이션이란 부분 문제를 풀었을때, DP 테이블에 해당 문제를 저장해놓고, 다음에 같은 문제가 나왔을때, 재계산하지 않고 DP 테이블의 값을 이용하는 것을 말한다. review 이번 문제는 N개의 집을 입력받고, N개..
https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SOLVE import java.util.Arrays; class Solution { public int solution(int[][] data, int col, int row_begin, int row_end) { int answer = 0; Arrays.sort(data, (o1, o2) -> { if(o1[col-1]==o2[col-1]) { return Integer.compare(o2[..
https://www.acmicpc.net/problem/1753 1753번: 최단경로첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가www.acmicpc.net   Solve package Algo_스터디.Jan_2주차;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;// comparable : 자기 자신과 매개변수 객체를 비교, compareTo 메소드를 반드시 구현해야한다...
https://www.acmicpc.net/problem/1753 1753번: 최단경로첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가www.acmicpc.net다익스트라 알고리즘을 사용하는 대표적인 문제.  다익스트라 알고리즘이란? BFS와 DP를 활용한 최단경로 탐색 알고리즘이다. 즉, 그래프에서 출발점에서 목표점까지의 최단거리를 구할 때 사용하는 알고리즘이다. 이 과정에서 도착 정점 뿐만 아니라 모든 다른 정점까지 최단 경로로 방문하며 각 정점까지의 최단 경로를 모두 찾게 된다. 매번 최단 경로의 정점을 선택해 탐색을..
https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다.www.acmicpc.net REVIEW 먼저 밑에서부터 읽어가면서 DFS를 사용해 동일한 문자가 4개 이상 있는지 확인하고, 4개 이상 있다면 해당 문자를 '.'으로 대체한다. while문을 한번 돌릴때마다 (연쇄 1 작용) 현재 상태의 배열을 copy 해서 while문 마지막에 copy 한 배열과 원래의 배열이 동일하지 않다면 변경된 부분이 있다는 의미이므로 연쇄 카운트를  +1해준다. 4개 이상인 ..
최장 증가 부분 수열은 어떤 수열에서 만들 수 있는 부분 수열 중에서 가장 길면서 오름차순을 유지하는 수열이며, LIS라고 한다. 예시로, 수열 A = {10, 20, 10, 30, 20, 50}이 있다고 하면 해당 수열의 LIS는 {10, 20, 30, 50} 풀이 방법1. DP를 활용한 LIS2. 이진탐색을 활용한 LIS* DP는 단순하지만 시간복잡도가 O(n^2)을 가진다.* 이진탐색을 활용하면 시간복잡도를 O(nlogn)을 가진다. 1. DP로 푸는 법   int N = 13; int[] arr = new int[N]; int[] dp = new int[N]; // dp로 풀 경우 for (int i = 0; i arr[j]) { dp[i] = Math.max(dp[i], dp[j] + 1..
https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net Solve import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenize..
youth787
'Algorithm' 카테고리의 글 목록 (3 Page)