Algorithm 30

[BOJ] 백준 5555 - 반지 - Java 풀이

괜히 char배열로 받아서 하나씩 비교하다가 빙빙 돌고서야 제대로된 해답을 찾았다. 원형으로 연결하는 것을 굳이 인덱스로 원형으로 따지기 보다는 그냥 output을 하나 더 더해서 원형처럼 효과를 내주는 것이 좋다는 것을 뒤늦에 알았다. 쉽게 말하면 그냥 하나의 String에서 검사해야한다면 그걸 원형으로 돌기 위해서 인덱스를 가지고 연산하는 둥의 고생을 하지 말고 그냥 String 복사본을 뒤에 붙여주는거다. "Hello" + "Hello" = "HelloHello" 가 되는거다. 여기서 돌면 원형으로 도는 것과 비슷한 효과를 얻을 수 있다. 이게 더 간결하다. 그리고 난 뒤에 contains를 이용해서 해당 키워드가 받은 문자열에 존재하는지만 확인하면 되는거다. import java.io.Buffer..

RadixSort(기수정렬) 에서는 왜 낮은 자리수부터 비교해야 하는걸까

제목과 동일한 질문을 교수님께 여쭤본 적이 있다. 답변은 아주 간단했는데, " MSD부터 정렬하게 되면 정렬이 되지 않습니다. " 였다. 사실 직접 해봤어야 했는데, 그 간단한 과정을 해보지 않고 질문을 해서 지금 생각해보니 조금 멍청한 질문이 아니었나 생각이 든다. 질문할 당시에는 왜 굳이 낮은 자리수부터 비교해야하는가에 대해 생각해보면서 낮은 자리수부터 비교한다면 A, B가 있다고 가정할때 A의 MSD가 B의 MSD보다 큼에도 불구하고 낮은 자리수부터 비교하면서 자리수를 거슬러 올라가는 과정에서는 그 사실을 알지 못함으로 A가 B보다 큼에도 계속해서 낮은 자리수를 비교함으로써 그것이 낭비라고 생각했다. 반면에 MSD부터 비교한다면 처음 비교할때부터 이미 A가 B보다 큼이 기정사실이 되어버리니 그 밑의..

알고리즘 스터디

Recursive Call Algorithm (재귀 함수)Permalink Maximum value or Minimum value (최대값 또는 최소값 찾기) : 가장 큰 숫자를 기억해가며 진행함 Euclid (유클리드 알고리즘) : 두 정수의 최대공약수(GCD)를 빠르게 구하기 Factorial (팩토리얼) Fibonacci (피보나찌 수열) Sum (합계) Sorting Algorithm (정렬 알고리즘)Permalink Selection Sort (선택 정렬) https://www.daleseo.com/sort-selection/ Bubble Sort (버블 정렬) https://www.daleseo.com/sort-bubble/ Quick Sort (퀵 정렬) https://www.daleseo...

알고리즘 설명해주는 블로그

roka88.dev/98 기본 정렬 알고리즘의 종류와 정리 최종수정일자 : 2020-01-03 이 글은 이미 공부 했었으나, 정렬을 쉽게 정리하지 못하는 사람을 위해 정리하였다. 정렬의 종류도 많으며, 설명하기가 쉽지 않다. 동작은 다양하며, 머리속에 어렴풋이 roka88.dev ict-nroo.tistory.com/category/ICT%20Eng/Algorithm?page=5 'ICT Eng/Algorithm' 카테고리의 글 목록 (5 Page) 주니어 개발자가 성장하는 공간 ict-nroo.tistory.com

DoublyLinkedList 코드

package list.doublylinkedlist.implementation; //양방향성이 있는 이중연결시스트. 더 많은 메모리를 사용하는 것이 단점임. public class DoublyLinkedList { private Node head; private Node tail; private int size = 0; private class Node{ private Object data; private Node next; private Node prev; public Node(Object input) { this.data = input; this.next = null; this.prev = null; } public String toString() { return String.valueOf(this..

리스트와 배열의 차이

리스트와 배열의 차이 리스트에서 데이터를 삭제하면, 해당 데이터가 사라지면서 해당 데이터 뒤에 있던 데이터가 한칸 앞으로 전진하게 된다. 하지만 배열에서 요쇼를 삭제하면, 그냥 그 자리는 비어 있게 된다. (특정한 처리를 해주지 않는이상) 그러므로, 리스트는 데이터가 있는지 없는지를 체크하지 않아도 되는 장점이 있다. 하지만, 배열은 어딘가가 비어있을 수도 있으므로, 데이터가 있는지 없는지 확인해야 한다. 그만큼 리스트보다 더 많은 공간을 차지한다. 하지만 이게 오히려 장점이 될 수 있다. 요소의 자리 (즉 인덱스)값이 바뀌지 않으므로, 배열은 특정 값의 키 즉 인덱스를 유지할 수 있다. 하지만 리스트는 앞의 데이터가 삭제되면, 한칸씩 앞으로 자동으로 당기므로, 인덱스 값이 변한다. 그러므로, 배열에서만..

힙정렬 코드

자료구조와 알고리즘 입문 - 자바편에 힙정렬이 나왔다. 하노이의 탑도 이해가 잘안갔고, 특히 재귀적 호출이 너무 복잡했다. 그래서 일부는 직접 그림판에 그림을 그려서 영상으로 찍어서 내가 하는말을 들어가면서 이해했는데, 글쎄,,, 힙정렬이 좀 이해가 잘안간다. 이해가 안가는건 일단 외우라고 했으니... 일단은 외워야 겠지... 이게 안좋은 방법인건 알고 있다. 근데 일단은 머릿속에 집어넣고 그 다음에 이해해야겠다. package algorithm; public class heap { private void solve() { int[] array = {230,10,60,550,40,220,20}; heapSort(array); for(int v:array) { System.out.println(v); } ..

반응형