Java/Java 문법 24

[Java] Map 모든 인덱스 조회하기

그냥.. 백준 문제 스터디하다가 기발한 방법을 발견해서 기록으로 남겨봅니다. 기존에 map[][] 같은 2차원 배열의 인덱스를 이동시킬때는 dx = { 1, 0, -1, 0 } dy = { 0, 1, 0 , -1 } 이런 이동하는 경우의 수를 더해주면서 이동했는데 아래의 방법을 이용하면 코드가 간결하게 줄어들면서 2차원 배열의 각 인덱스를 조회 할 수 있습니다. 1. cnt = 0부터 시작하여 각 인덱스를 모두 조회 할때 까지 map.length 까지 증가시킵니다. 2. x 와 y는 몫과 나머지로 결정됩니다. 3. 나누는 값은 열의 값으로 진행됩니다. (열로 나누냐, 행으로 나누냐에 따라 경우가 다릅니다.) package BackTracking; import java.io.BufferedReader; i..

Java/Java 문법 2021.07.22

[JAVA] 우선순위 큐(priorityQueue)

1. 우선순위큐 -PriorityQueue는 먼저 들어온 순서대로 데이터가 나가는 것이 아닌 우선순위를 먼저 결정하고 그 우선순위가 높은 엘리먼트가 먼저 나가는 자료구조입니다. ​ -우선순위 큐는 힙을 이용하여 구현하는 것이 일반적입니다. ​ -데이터를 삽입할 때 우선순위를 기준으로 최대힙 혹은 최소 힙을 구성하고 데이터를 꺼낼 때 루트 노드를 얻어낸 뒤 루트 노드를 삭제할 때는 빈 루트 노드 위치에 맨 마지막 노드를 삽입한 후 아래로 내려가면서 적절한 자리를 찾아서 옮기는 방식으로 진행됩니다. ​ 2. Priority Queue의 특징 1) 높은 우선순위의 요소를 먼저 꺼내서 처리하는 구조 (큐에 들어가는 원소는 비교가 가능한 기준이 있어야함) 2) 내부 요소는 힙으로 구성되어 이진트리 구조로 이루어져..

Java/Java 문법 2021.04.28

[java] 플로이드-워셜 알고리즘 (Floyd-Warshall Algorithm)

1. 플로이드 워셜 알고리즘이란, 그래프에서 가능한 모든 노드 쌍에 대한 최단 거리를 구하는 알고리즘입니다. ​ * 다익스트라 알고리즘은, 하나의 정점에서 다른 모든 정점까지의 최단 거리를 구하는 알고리즘이고, * 플로이드-워셜 알고리즘은, 한 번 실행하여 모든 노드​ 간의 최단 거리를 구하는 알고리즘입니다. ​ * 플로이드 워셜 알고리즘은, 다익스트라 알고리즘과 다르게 음의 간선도 사용할 수 있다. 2. 과정 ​ * 플로이드 워셜 알고리즘은 모든 노드간의 경로를 구하기때문에 2차원 배열이 필요합니다. ​ 초기 행렬 ​ * 노드의 개수만큼 라운드를 반복하여 각각의 해당 하는 노드를 중간 노드로 설정합니다. ​ 예를 들어, 1) 1번 라운드에는, 1번 노드가 중간노드가 되어 가능한 모든 경로를 갱신합니다...

Java/Java 문법 2021.04.28

[java] 선택정렬 (Select Sort)

1. 선택정렬이란 - 선택정렬이란, 초기상태의 배열(정렬되지 않은 상태)에서 우선순위가 가장 높은 요소를 선택해 배열의 맨 앞으로 이동시키는 정렬 방법이다. ​ 예시) ​ 2. 시간복잡도 선택정렬의 장점 1.구현이 간단하고 2. 두 개의 반복문을 사용하여 비교 횟수가 정해져잇다. ​ 단점 1. 반복문이 돌기 전에 정렬이 끝나도, 배열의 끝 요소까지 비교를 체크한다. ​ 따라서 선택정렬의 시간복잡도는 O(n2)로 매우 느리다. 선택 정렬 구현 방법 ex) int arr[] = {1, 3, 5, 4, 2 }; for(int i=0;i

Java/Java 문법 2021.04.28

[java] 객체 정렬 Comparable과 Comparator

* C++ 에서 Pair가 있지만, 자바에서는 클래스를 정의해 주어야한다. ​ 1. Comparable 인터페이스 - 자바에서 객체를 정렬하는데 사용되는 메소드인 compareTo() 메소드를 정의하고있는 인터페이스​이다. - 자바에서 같은 타입의 인스턴스를 서로 비교햐야만 하는 클래스들은 모두 Comparable 인텊페이스를 구현하고 있다. - 따라서 Boolean을 제외한 래퍼 클래스나 String, Time, Date와 같은 클래스의 인스턴스느 모두 정렬이 가능하다. - 기본 정렬 순서는 "오름차순"이다. class Car implements Comparable { private String modelName; private int modelYear; private S..

Java/Java 문법 2021.04.28

[JAVA] 배열 초기화(Arrays.fill() 메소드 / 배열 값 채우기)

자바에서는 배열을 하나의 값으로 간단하게 초기화 할 수 있다. ​ 배열의 값을 초기화 하는 방법으로 2가지가 있는데 1. For 문, 반복문의 사용 int test[] = new int[100]; for(int i=0;i 둘의 결과값은 똑같다. ​ Arrays.fill() 메소드를 이용하면, - int형 배열, - Double형 배열, - Boolean형 배열, 등등 ​ 모든 배열에 동일하게 적용된다. ​ (Boolean형 배열 초기화 예제) boolean bool[] = new boolean[10]; Arrays.fill(bool,true);

Java/Java 문법 2021.04.28

[JAVA] Map 컬렉션 클래스

Map 컬렉션 클래스 Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가집니다. Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용합니다. 여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다. Map 인터페이스를 구현한 모든 Map 컬렉션 클래스는 다음과 같은 특징을 가집니다. 1. 요소의 저장 순서를 유지하지 않습니다. 2. 키는 중복을 허용하지 않지만, 값의 중복은 허용합니다. 대표적인 Map 컬렉션 클래스에 속하는 클래스는 다음과 같습니다. 1. HashMap 2. Hashtable 3. TreeMap 1. HashMap 클래스 HashMap 클래스는 Map 컬렉션 클래스에서 ..

Java/Java 문법 2021.04.28

[JAVA] 자바 HashSet, TreeSet (Set 컬렉션 클래스)

1. Set 컬렉션 클래스의 특징 1) 요소의 저장순서를 유지하지 않느다. 2) 같은 요소이 중복저장을 허용하지 않느다. ( 즉, HashSet을 이용하면, 중복값을 쉽게 제거할 수 있다.) ​ Set 컬렉션 클래스의 종류 1. HashSet 2. TreeSet ​ 2. HashSet 클래스 - 가장 많이 사용하는 Set 클래스 - 해시 알고리즘을 사용하여 검색속도가 매우 빠름 - 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장 ​ - 저장순서를 유지해야한다면 LinkedHashSet을 이용하여야 함 ​ HashSet 예제 HashSet hs01 = new HashSet(); HashSet hs02 = new HashSet(); // add() 메소드를 이용한 요소의 저장 hs01.add("홍길..

Java/Java 문법 2021.04.28

[JAVA] 컬렉션 프레임워크 개념(List, Set, Map)

1. 자바 컬렉션 프레임 워크란 - 자바에서 컬렉션 프레임워크(Collection Framwork)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합니다. ​ - 쉽게말해, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 일종의 인터페이스로 볼 수 있습니다. ​ 2. 컬렉션 프레임워크 주요 인터페이스 컬렉션 프레임워크에서는 데이터를 저장하는 자료 구조에 따라 다음과 같은 핵심이 되는 주요 인터페이스를 정의하고 있습니다. 1. List 인터페이스 2. Set 인터페이스 3. Map 인터페이스 ​ 구조상의 차이로 List와 Set / Map을 별도로 정의하긴 합니다. 그림으로 그 차이를 보면 이렇습니다. ​ 3. 주요 인터페이..

Java/Java 문법 2021.04.28

[JAVA] 자바 Math 메소드 정리 (수학 함수 정리)

자바 대표적인 Math 메소드 Math 클래스의 메소드는 매우 다양하며, 그중에서 많이 사용되는 메소드는 다음과 같습니다. 메소드 설명 static double random() 0.0 이상 1.0 미만의 범위에서 임의의 double형 값을 하나 생성하여 반환함. static double abs(double a) static double abs(float a) static double abs(int a) static double abs(long a) 전달된 값이 음수이면 그 값의 절댓값을 반환하며, 전달된 값이 양수이면 인수를 그대로 반환함. static double ceil(double a) 전달된 double형 값의 소수 부분이 존재하면 소수 부분을 무조건 올리고 반환함. static double fl..

Java/Java 문법 2021.04.26
반응형