LeeDiculous
article thumbnail
단방향 Linked List 뒤부터 세기
알고리즘 2023. 1. 12. 11:59

❓문제 단방향 Linked List의 끝에서 K번째 노드를 찾는 알고리즘을 구현하시오. 첫 번째 방법 찾는 노드가 뒤에서부터 첫 번째라고 하면 아래의 방법으로 처음부터 4번째 노드임을 알 수 있습니다. k = 1 4 - k = 3 + 1 = 4 이를 코드로 구현해봅시다. public static Node KthToLast(Node first, int k){ Node n = first; int total = 1; while(n.next != null){ total++; n = n.next; } n = first; for(int i = 1; i < total - k + 1; i++){ n = n.next; } return n; } 두 번째 방법 단방향 Linked List는 항상 맨 앞에 있는 노드부터 카운..

article thumbnail
비트연산 - Bit Operation
알고리즘 2023. 1. 9. 22:14

알아보기 Java에서는 Integer가 4 bytes이므로, (4 bytes = 32 bits) 32개의 칸이 있다고 생각해도 됩니다. 이 서른두 개의 각 칸에는 오직 0과 1만 들어갈 수 있습니다. 아래 숫자 8로 예를 들어 보면. 0000...0001000이고 나머지 공간은 0으로 채워집니다. 그렇다면 이 32 개의 공간으로 표현할 수 있는 개수가 몇 개일까요? 공간(칸) 하나당 표현할 수 있는 정보는 0과 1로 두개입니다. 즉 32 개의 공간이라면 표현할 수 있는 숫자의 가짓수는 2^{32} 개가 맞습니다. 하지만 숫자는 0부터 시작하기 때문에 표현할 수 있는 숫자의 최대 크기는 2^{32} -1 입니다. 정수에는 양의 정수, 음의 정수가 있기 때문에, 맨 앞의 한칸을 사인으로 사용하기로 합니다. ..

article thumbnail
Linked List 중복값 삭제
알고리즘 2023. 1. 3. 18:47

이전 포스팅의 Linked List를 구현한 코드에서 추가로 중복값을 제거하는 기능을 추가하려 합니다. 아래의 메소드는 중복을 찾아내어 삭제해줍니다. void removeDups(){ Node n = header; while(n != null && n.next != null){ Node r = n; while(r.next != null){ if(n.data == r.next.data){ r.next = r.next.next; }else { r = r.next; } } n = n.next; } }

article thumbnail
Linked List 개념
알고리즘 2023. 1. 3. 14:16

Linked List란? Linked List란 컴퓨터에 자료를 저장하는 구조의 한 종류입니다. 일렬로 연결된 데이터를 저장할 때 사용합니다. 데이터를 저장할 수 있는 공간이 있으면 그 안에 다음 데이터의 주소를 가지고 있는 구조입니다. 배열과 비교 Linked List를 이야기할 때 배열을 빼놓을 수 없습니다. 배열은 배열 방들이 물리적으로 한 곳에 모여있습니다. 그래서 배열의 방 크기를 한번 정하면 늘이거나 줄일 수가 없습니다. 그에 반해 Linked List는 데이터를 중간에 삽입하고 싶으면 앞에 노드가 가지고 있던 주소를 자기가 갖고 앞에 노드에는 나의 주소를 알려주면 됩니다. 반대로 링크를 빼고 싶다면 해당 노드가 가지고 있던 다음 노드의 주소를 앞에 노드에 주면 됩니다. 그렇게 되면 자연스럽게..

profile on loading

Loading...