목록개인공부/IT 지식 (12)
마트철수
안녕하세요,알고리즘 문제를 풀다보면,내가 지정한 순서로 배열을 정렬하고 싶을 때 코드 구현이 매번 헷갈리더라구요. 그래서 배열 정렬 방법과 관련해서한 곳에 정리해두려고 합니다.(티스토리에서 받은 스티커인데 귀엽네요) 배열 정렬이란?Java에서 배열을 정렬하려면, 비교 기준이 필요합니다. Arrays.sort() 메서드를 사용하면 배열을 정렬할 수 있지만, 비교 기준이 설정되지 않으면 ClassCastException 오류가 발생합니다. 이 문제를 해결하기 위해 Comparator 인터페이스를 구현해야 합니다. 주로 사용되는 4가지 정렬 방법을 정리해두었습니다. 1. Comparator 익명 클래스 사용int[] arr = {5, 3, 1, 4, 2};Arrays.sort(arr, new Comparat..

안녕하세요! 프로그래머스 레벨1문제를 풀다보면 단순 구현 문제가 많이 출제되고..그 중 해시 문제가 나올때마다 반가우면서(?) 함수가 자꾸 헷갈리더라구요. HashMap가 무엇인지 알아보고,알고리즘 풀이에 사용되는 메서드를 깔끔하게 정리해보겠습니다. 관련 문제도 하단에 적어놓겠습니다.열알!*열심히 알고리즘 HashMap 알고리즘의 이해Java에서 HashMap은 매우 중요한 데이터 구조로, 키-값 쌍을 저장하고 효율적으로 조회할 수 있는 방법을 제공합니다. 이 글에서는 HashMap의 기본 원리, 해시 충돌 해결 방법, 그리고 성능 향상을 위한 몇 가지 기술적 변화에 대해 살펴보겠습니다.1. HashMap의 기본 구조정의: HashMap은 Java Collections Framework의 일환으로, ..

대충 만든 자판 프로그래머스 대충 만든 자판을HashMap 함수를 사용해서 풀었다. 다른 문제도 풀었지만,HashMap을 사용해서 푼 해당 문제에 대해좀 더 깊게 파악해보려고 한다. 유클리드 호제법 호스팅도 필요 ... 대충 만든 자판HashMap 함수 사용key는 char로 선언 → s.charAt(i)문자열의 i 위치에 있는 문자를 key로 설정putIfAbsent만약 값이 비워져있다면 숫자값을 갱신해주는 것으로!map.containsKey(key)key 값을 가지고 있다면 if문 실행하도록 import java.util.*;class Solution { public int[] solution(String[] keymap, String[] targets) { int[] answer..

맨해튼 거리Manhattan Algorithm 두 점 간의 거리를 측정하는 간단한 알고리즘입니다. 맨해튼 거리는 두 점 간의 수평 및 수직 거리의 합으로 정의됩니다. 이는 주로 격자 형태의 도시에서 두 지점 간의 최단 경로를 계산할 때 사용됩니다. 그리고 아래와 같은 특징이 있습니다. 비대칭성: 맨해튼 거리는 대칭적입니다. 즉, A에서 B까지의 거리와 B에서 A까지의 거리는 같습니다.비음수성: 맨해튼 거리는 항상 0 이상의 값을 가집니다.격자 기반: 주로 격자 형태의 공간에서 사용되며, 실제 거리와는 다를 수 있습니다. 그리고 유클리드 거리보다 더 쉬운 알고리즘이라 볼 수 있습니다. 맨해튼 거리는 L1 거리, 유클리드 거리는 L2 거리라고 불리웁니다. 여기서 유클리드 거리란, 피타고라스 정리를 사용한 직..

다익스트라 알고리즘Dijkstra Algorithm 모든 정점까지의 최단 거리를 각각 구하는 알고리즘입니다. 음의 가중치가 없는 그래프에 활용할 수 있는 알고리즘입니다. 인접 행렬로 표현된 그래프의 경우 O(V^2)의 시간복잡도를 가지고 있습니다. 이후 우선순위 큐 등을 이용한 알고리즘이 탄생한 것입니다. 음의 가중치를 가지면 안되는 이유는 최소 비용의 음의 무한대 발산, 그리디 알고리즘 적용 불가능 등이 있습니다. 기본적으로 그리디 알고리즘과 다이나믹 프로그래밍을 반복하여 정답을 찾는 과정입니다. - 그리디 알고리즘: 방문하지 않은 노드 중에서 최소 비용의 노드 선택- 다이나믹 프로그래밍: 해당 노드에서 접근 가능한 노드들의 비용 갱신 위 내용을 요약하자면 아래와 같습니다.하나의 정점에서 출발하는 최단..

유클리드(유클리디안) 호제법Euclidean Algorithm 두 수의 최대공약수를 구하는 알고리즘입니다. 큰 수를 작은 수로 나누어 떨어지게 하며, 나머지가 0이 될 때까지 반복적으로 수행하는 것을 의미합니다. 이때 작은 수가 최대공약수입니다. 여기서 호제법은 두 수가 서로 상대방 수를 나누어서 원하는 수를 얻게 하는 알고리즘을 의미합니다. 두 개 이상의 양의 정수의 최대공약수 구하는 방법 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같습니다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 ..