본문 바로가기

자바5

Enum(열거형) 개념 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMONT = 2; static final int SPADE = 3; static final int TWO = 0; static final int THREE = 1; static final int FOUR = 2; final int kind; final int num; } 위 상수들을 enum으로 나타내면, class Card { enum Kind {CLOVER, HEART, DIAMONT, SPADE} //열거형 Kind를 정의 enum V.. 2021. 12. 21.
백준 1932번 정수 삼각형(JAVA) 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 문제 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 .. 2021. 10. 28.
투포인터(Two Pointers) 알고리즘 개념 투포인터 알고리즘은 리스트에서 순차적으로 접근해야 할 때 두 개의 위치(인덱스)를 기록하면서 처리하는 알고리즘이다. 정렬되어 있는 두 리스트의 합집합에도 사용된다. 두 개의 인덱스 중 하나는 탐색을 할 때마다 반드시 1 증가한다. 어느 인덱스라도 리스트의 크기에 도달해야 하므로 투포인터 알고리즘의 시간복잡도는 O(N)이 된다. 설명 개요 1. 부분합이 찾는 값이거나 오른쪽 인덱스가 (리스트의 크기 - 1)이라면 왼쪽 인덱스를 1 증가시킨다. 2. 부분합이 찾는 값이 아니라면 오른쪽 인덱스를 1 증가시킨다. 3. 위 과정을 왼쪽 인덱스가 (리스트의 크기 - 1)이 될 때까지 반복한다. 구현 구간이 연속적일 때 0 1 2 3 4 5 1 4 2 2 1 2 어떤 숫자들의 리스트가 위와 같이 주어질 때, 해.. 2021. 10. 8.
이분탐색(Binary Search) 알고리즘 개요 이분탐색은 정렬된 데이터에서 검색 범위를 줄여나가며 원하는 데이터를 검색하는 알고리즘이다. 이진 탐색은 탐색을 반복할 때마다 탐색 범위를 반으로 줄인다. 탐색 범위가 1이 되는 최종 탐색 횟수를 k라고 하면, 1. 한 번 비교할 때의 범위는 n/2 2. 두 번 비교할 때의 범위는 n/4 3. 세 번 비교할 때의 범위는 n/8 ... k. k 번 비교할 때의 범위 n/(2^k)는 = 1 이고, k = log₂N 이다. 따라서 이진 탐색의 시간 복잡도는 O(logN)이 된다. 설명 0 1 2 3 4 5 6 7 8 9 2 5 6 9 12 13 14 18 20 23 위와 같이 정렬되어 있는 배열이 있을 때, 20을 찾는다고 가정해보자. 만약 순차탐색을 하면 0번째 인덱스, 1번째 인덱스, 2번째 인덱스 ... 2021. 10. 8.