자료구조와 알고리즘

    [Java] 프로그래머스 - 순위

    문제링크 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 문제 주어진 승자와 패자가 있는 배열에서 순위를 결정지을 수 있는 사람이 몇명인지를 구하는 문제입니다. 주어지는 조건은 사람의 수 n 과 승/패 배열입니다. 풀이 주어지는 노드의 개수가 1~N 이므로 간단하게 노드들을 생성해두고, 승리자와 패배자를 연결하여 풀었습니다. 노드의 개수가 100개 이하이고, 배열의 길이가 4500개 이하이므로 시간초과를 크게 고려하지 않아도 될거 같습니다. 다음과 같은 순서로 풀이를 했습니다. 1. 노드들마다 자신이 알고 있는 승자와 패자를 넣음 2. 승자와 패자를 많이 알고 있는 노드 순으로 정렬한 후, 모든 노드를 순회하며, 다..

    [알고리즘] 백준 - 2309 일곱난쟁이 (Java)

    https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 9명중 7명을 고르는 문제이기 때문에 경우의 수가 많지 않다. 난쟁이가 아닌 2명만을 고르면 되기 때문에 9C2 = 36 가지 경우의 수가 있다. 순서가 없는 조합문제는 nCr => n! / r! 과 같이 경우의 수를 계산할 수 있다. 문제의 요건에서 두명의 난쟁이의 키를 빼면 100 이 되기 때문에 모두 반복할 수 있도록, 이중 배열을 사용하여 하나씩 선택해 나가는 형태로 구현하였다.

    LinkedList(연결리스트)

    LinkedList(연결리스트) 에 대해 알아보겠습니다. LinkedList는 각 노드들이 연결되어 있는 형태의 자료구조입니다. 배열(array)은 인덱스로 관리되는 반면에 연결리스트는 각 노드가 다음노드의 포인터를 가지는 구조로 되어있습니다. 각 노드는 데이터와 주소로 이루어지고, 하나의 노드는 다음 노드의 주소를 가지고 있습니다.마지막 노드는 다음 노드의 주소를 가질수 없기 때문에 주소값을 NULL값으로 가집니다. 연결리스트와 비교되는 배열은 위에 같은 형태를 띄고 있으며, 데이터를 가지는 위치를 index로 나타냅니다.배열의 이름과 index를 사용하여 (ex: arr[0], arr[1]) 특정 index를 가지는 노드에 바로 접근이 가능합니다.그렇기 때문에 배열은 특정 위치를 지정하여 검색할 때는..