본문 바로가기

회고록/Java dataStructure&Algorithm18

알고리즘 특강(1) 보호되어 있는 글 입니다. 2024. 3. 19.
DFS (Def) feat 피로도 문제(프로그래머즈) DFS 기본 이해 그래프 순회 방식의 일종. 거의 항상 너비우선탐색(BFS; Breadth First Search)과 비교되어 나온다. 트리나 그래프에서 한 루트로 탐색하다가 특정 상황에서 최대한 깊숙이 들어가서 확인한 뒤 다시 돌아가 다른 루트로 탐색하는 방식. 대표적으로 백트래킹에 사용한다. 일반적으로 재귀호출(Recursion!)을 사용하여 구현하지만, 단순한 스택 배열로 구현하기도 한다. 구조상 스택 오버플로우를 유의해야 한다. 장점 단지 현 경로상의 노드들만을 기억하면 되므로 저장 공간의 수요가 비교적 적다. 목표 노드가 깊은 단계에 있을 경우 해를 빨리 구할 수 있다. 단점 해가 없는 경로에 깊이 빠질 가능성이 있다. 따라서 실제로는 미리 지정한 임의 깊이까지만 탐색하고 목표 노드를 발견하지 .. 2024. 3. 19.
Overflow 문제. (피보나치 수) 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한 사항 n은 2 이상 100,000 이하인 자연수입니다. 1. 실수 코드 굉장히 쉬워 보이는 문제..... 낮은 숫자라면 잘 돌아가지만 숫자가 조금 만 커지면,... 흠...... 2024. 3. 18.
map 정열/Sorting by key or value Key 로 Sorting treeMap 사용 TreeMap sorted = new TreeMap(map); ArrayList 사용 List employeeByKey = new ArrayList(map.keySet()); Collections.sort(employeeByKey); SortedSet keySet = new TreeSet(map.keySet()); Stream 사용 map.entrySet() .stream() .sorted(Map.Entry.comparingByKey()) .forEach(System.out::println); Value 로 Sorting List list = new ArrayList(map.entrySet()); list.sort(Entry.comparingByValue()).. 2024. 3. 15.