java 12

[백준] G5. 택배 배송 (Java)

문제농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는 구두쇠라서 최소한의 소들을 만나면서 지나가고 싶습니다.농부 현서에게는 지도가 있습니다. N (1 다음 지도를 참고하세요. [2]--- / | \\ /1 | \\ 6 / | \\ [1] 0| --[3] \\ | / \\2 4\\ | /4 [6] \\ | / /1 [4]-----[5] 3농부 현서가 ..

[프로그래머스] LV3. 불량 사용자 (Java)

문제개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담당자인 "프로도" 에게 전달하려고 합니다. 이 때 개인정보 보호을 위해 사용자 아이디 중 일부 문자를 '' 문자로 가려서 전달했습니다. 가리고자 하는 문자 하나에 '' 문자 하나를 사용하였고 아이디 당 최소 하나 이상의 '*' 문자를 사용하였습니다."무지"와 "프로도"는 불량 사용자 목록에 매핑된 응모자 아이디를 제재 아이디 라고 부르기로 하였습니다.예를 들어, 이벤트에 응모한 전체 사용자 아이디 목록이 다음과 같다면 응모자 아이디frodofra..

[Java] 그래프

그래프그래프는 인터넷, 도로, 운송, 전력, 상하수도망, 신경망, 화학성분 결합, 단백질 네트워크, 금융 네트워크, 소셜네트워크 분석 등의 광범위한 분야에서 활용되는 자료구조이다.그래프 용어그래프는 정점(Vertex)과 간선(Edge)의 집합으로 하나의 간선은 두 개의 정점을 연결그래프는 G=(V, E)로 표현, V=정점의 집합, E=간선의 집합방향그래프(Directed Graph) : 간선에 방향이 있는 그래프무방향그래프(Undirected Graph) : 간선에 방향이 없는 그래프정점 a와 b를 연결하는 간선을 (a, b)로 표현정점 a에서 b로 간선의 방향이 있는 경우 로 표현차수(Degree) : 정점에 인접한 간선(edge)의 수방향그래프에서는 차수를 진입자수(In-Degree)와 진출차수(Ou..

[Java] 정렬

💡 정렬 종류선택정렬삽입정렬쉘정렬힙정렬합병정렬퀵정렬기수정렬외부정렬이중피벗정렬Tim sort선택정렬배열에서 아직 정렬되지 않은 부분의 원소들 중에서 최솟값을 ‘선택’하여 정렬된 부분의 바로 오른쪽 원소와 교환하는 정렬 알고리즘Selction 클래스import java.lang.Comparable;public class Selection { public sttic void sort(Comparable[] a) { int N = a.length; for (int i = 0; i 수행시간선택정렬은 루프가 1번 수행될 때마다 정렬되지 않은 부분에서 가장 작은 원소를 선택원소들의 총 비교 횟수는$(N-1) + (N-2) + (N-3) + \cdots + 2 + 1 = \frac{N(..

[Java] Hash Table

해당 글에서는 아래 hash() 메소드 활용최상위 bit(부호 bit)를 제외시키기 위해 key와 0xfffffff에 대해 AND 연산 수행하여 얻은 31bit 양수를 해시테이블 크기인 M으로 나눈 나머지를 해시값으로 사용private int hash(Key k) { return (k.hashCode() & 0x7fffffff) % M;}해시테이블핵심 아이디어O(logN) 시간보다 빠른 연산을 위해, 키와 1차원 배열의 인덱스 관계를 이용하여 키(항목)를 저장키를 배열의 인덱스로 그대로 사용하면 차지 않은 빈 공간에 메모리 낭비가 심해지므로 키를 변환하여 배열의 인덱스로 사용키를 간단한 함수를 사용해 변환한 값을 배열의 인덱스로 이용하여 항목을 저장하는 것을 해싱(Hasing)이라고 함해싱에 사용되..

[Java] Priority Queue 클래스 사용자 정의 방법

우선순위 큐정의가장 높은 우선순위를 가진 항목에 접근, 삭제, 임의의 우선순위를 가진 항목의 삽입을 지원하는 자료구조 사용법import java.util.PriorityQueue;import java.util.Collections;PriorityQueue 변수명 = new PriorityQueue();기존 정렬오름차순PriorityQueue 변수명 = new PriorityQueue();내림차순PriorityQueue 변수명 = new PriorityQueue(Collections.reverseOrder());사용자 정의람다식compare 메서드를 구현하지 않고 자바8 이상에서 편리하게 사용 가능PriorityQueue pq = new PriorityQueue((x, y) -> x - y);Compara..

[백준] G5. 감시 피하기 (Java)

문제 설명문제NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복도로 빠져나온 학생들은 선생님의 감시에 들키지 않는 것이 목표이다.각 선생님들은 자신의 위치에서 상, 하, 좌, 우 4가지 방향으로 감시를 진행한다. 단, 복도에 장애물이 위치한 경우, 선생님은 장애물 뒤편에 숨어 있는 학생들은 볼 수 없다. 또한 선생님은 상, 하, 좌, 우 4가지 방향에 대하여, 아무리 멀리 있더라도 장애물로 막히기 전까지의 학생들은 모두 볼 수 있다고 가정하자.다음과 같이 3x3 크기의 복도의 정보가 주어진 상황을 확인해보자. 본 문제에서 위치 값을 나타낼 때는 (행,열)의 형..

[Java] Stack & Queue

스택(Stack)한 쪽 끝에서만 item(항목)을 삭제하거나 새로운 item을 저장하는 자료구조새 item을 저장하는 연산 : pushTop item을 삭제하는 연산 : pop후입 선출(Last-In First-Out, LIFO) 원칙 하에 item의 삽입과 삭제 수행구현배열로 구현한 ArrayStack 클래스import java.ut8il.EmptyStackException;public class ArrayStack { private E S[]; // 스택을 위한 배열 private int top; // 스택의 top 항목의 배열 원소 인덱스 // 스택 생성자 public ArrayStack() { s = (E[]) new Object[1]; // 초기 크기 1..

[Java] 자바 기초와 프로그램 개발 환경

클래스, 메소드 상속클래스 구조클래스 (붕어빵 틀)필드 : 변수생성자 : 변수 초기화하는 목적을 가진 construct메소드 : 클래스에 속한 함수객체 (붕어빵)new라는 연산자를 사용하여 객체 생성 가능자바 기초 문법변수의 타입과 상수정수 타입byte (1byte)short (2byte)int (4byte)long (8byte)실수 타입float(4byte)double(8byte)논리 타입boolean (1byte)문자 타입char(2byte)내장 클래스import java.util.*;Arrays.sort(a, from, to);상수final int SCALE = 1000;final float PI = 3.141591final int SIZESIZE = 100프린트System.out.println("..

[Java] 자료구조 소개

자료구조자료구조란자료를 저장, 조직, 관리하는 방법문제 해결에 사용할 부품즉, 프로그래밍을 위해 데이터와 구조 모듈에 대한 이해가 필요생각하는 방법을 훈련하는 도구로 문제 해결 과정에서 논리의 골격이 구성되는 방법과 스타일이라고 할 수 있다.자료구조 : 리스트, 스택, 큐, 힙, 검색 트리, 해시 테이블, 그래프 등생각하는 방법 : 재귀, 추상화, 정렬, 그래프 등자료구조 종류배열배열연결 리스트양방향 연결리스트원형 연결리스트2차원 배열행렬스택 / 큐LIFO 구조 스택FIFO 구조 큐그래프그래프트리우선순위 큐 ex. 최대 힙자료구조 관련 클래스를 모아둔 자바 컬렉션 패키지자료구조 형태선형 자료구조리스트스택큐색인(인덱스) 자료구조검색 트리이진 검색 트리균형 검색 트리해시 테이블효율적인 자료구조우선순위 큐: ..