연결리스트(LinkedList) LinkedList는 자바에서 제공하는 자료구조 중 하나로, 리스트를 구현하는데 사용된다. LinkedList는 노드(Node)들이 링크로 연결되어 있는 자료구조이다. 각 노드는 데이터와 다음 노드를 가리키는 포인터(주소)로 이루어져 있다. 첫 번째 노드를 head(머리)라고 하고, 마지막 노드는 tail(꼬리)라고 한다. 새로운 노드가 추가되면, 추가된 노드의 포인터가 다음 노드를 가리키도록 설정되고, 이전 노드의 포인터는 새로운 노드를 가리키도록 변경된다. 노드가 삭제가 되면, 삭제 되는 노드의 이전 노드의 포인터를 삭제 하고 삭제 대상 노드의 다음 노드로 포인트를 지정 후 삭제된다. 삭제는 GC(가비지 컬렉터)가 참조되지 않는 데이터에 관해서 알아서 삭제 해준다. (..
문제 문제 풀이 부트캠프에서 Linked List를 이용하여 풀어보라고 하여 Linked List를 활용하여 처리해보고자 한다. 해당 문제에서 우선순위가 head에 오게 되면 해당 값을 출력하고 location값이 몇 번째로 출력하는지 return 해주면 되는 문제이다. head에 있는 2값은 최우선 순위가 아니므로 tail로 위치를 이동. 같은 이유로 1도 뒤로 이동. 그렇게 뒤로 이동하다 보면 우선순위가 head로 오게 되는데 전체에서 출력을 하는 순번이 1번이므로 return을 1해준다. 나의 답안 자료구조는 LinkedList에 배열을 사용하여 처리 하였음. 뭐랄까 우선순위와 값을 둘 다 가질 수 있는게 무엇일까 고민하다 사용. public static int solution(int[] prior..
문제 문제 요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다.N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) 출력 예제와 같이 요세푸스 순열을 출력한다. 문제 풀이 1~N 이하의 값을 가지고 있는 배열을 가지고 K번..
문제 문제 풀이 문제자체가 좀 길어서 해석하기가 어려워 보일 수 있으나 단순히 가로의 큰값 * 세로의 큰값을 곱해주면 되는 간단한 문제이다. 나의 답안 public static int solution(int[][] sizes) { int widthMax = Integer.MIN_VALUE; int heightMax = Integer.MIN_VALUE; for (int[] arr : sizes) { if (arr[0] < arr[1]) { int tmp = arr[0]; arr[0] = arr[1]; arr[1] = tmp; } if (widthMax < arr[0]) widthMax = arr[0]; if (heightMax < arr[1]) heightMax = arr[1]; } return width..
문제 문제 풀이 해당 문제를 보고 원형큐 자료구조를 이용하면 좋겠다고 생각하고 접근하였다. 배열에 a - z , A- Z 까지의 값을 담아두고 입력되는 string 값과 배열에 있는 문자값을 비교하여 맞을 때 나오는 (index + n) % arr.length 로 처리하였음. 나의 답안 public static String solution(String s, int n) { StringBuffer sb = new StringBuffer(); char[] big = new char[26]; char[] small = new char[26]; char smallEng = 'a'; char bigEng = 'A'; for (int i = 0; i < small.length; i++) { small[i] = sm..
해시 맵(Hash Map, Hash Table) 해시맵은 키(Key)와 값(Value)이 한쌍으로 이루어진 데이터를 저장하고, 키를 이용하여 값을 검색할 수 있다. 내부적으로 배열을 이용하여 구현되며, 각 키는 해시 함수를 이용하여 배열의 인덱스로 변환되어 저장이 된다. 이 때, 해시 함수는 키의 일부를 이용하여 인덱스로 변환하는데, 이를 해싱(Hashing) 이라고 한다. 해시 함수를 통해 구한 인덱스에 해당하는 배열 위치에 데이터를 저장하면, 나중에 같은 키를 이용하여 검색할 때도 해시 함수를 통해 인덱스를 구한 후 해당 위치의 값을 바로 찾을 수 있다. 이 때 검색 시간 복잡도는 O(1)이기 때문에 매우 빠른 검색 속도를 보장하고 있다. 해시 맵(Hash Map)과 해시 테이블(Hash Table)..