본문 바로가기

Java 개념정리

(11)
[Java] Map - map.getOrDefault(Object key, V defaultValue) 찾는 키가 존재한다면 해당키의 값을 반환하고, 없다면 기본 값을 반환하는 Map의 메서드, getOrDefault(Object key, V defaultValue) 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값을 반환 import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { String[] str = {"A", "B", "C", "D", "E", "C", "B", "B"}; Map strMap = new HashMap(); for (String s : str) { strMap.put(s, strMap.getOrDefault..
[Java] int 값의 2진수 이진 표현에서 1비트 개수를 반환해주는 함수, Integer.bitcount() int 값의 2진수 이진 표현에서 1비트 개수를 반환해주는 메소드, Integer.bitcount() 만약 숫자값의 이진수에서 "1"의 개수를 파악하고 싶다면, 해당 함수를 사용하면 된다. Integer.bitCount(int i)는 숫자를 1차로 이진변환하고, 그 이후 이진변환된 값에서 "1"의 개수를 확인한다. class Solution { public int solution(int n) { int bitCnt = Integer.bitCount(n); return bitCnt; } public static void main(String[] args) { Solution sol = new Solution(); int n = 1; // 이진법 변환 : 1 int n2 = 2; // 이진법 변환 : 10 ..
[Java] StringBuilder를 이용하여 지정한 위치에 문자를 넣는 방법, insert StringBuilder를 이용하여 지정한 위치에 문자를 넣는 방법, insert StringBuilder의 메소드 insert를 사용하여 특정(지정한) 위치에 문자를 넣을 수 있다. public class StringBuilderInsert { public static void main(String args[]){ StringBuilder sb = new StringBuilder(); // StringBuilder 선언 sb.append("apple"); // 출력 : apple sb.insert(0, "this is "); // 출력 : this is apple sb.insert(8, "pine"); // 출력 : this is pineapple } } → "apple"이라는 문자가 들어있는 상태에서..
[java] 투 포인터(Two Pointers) 투 포인터(Two Pointers)란? : 배열에서 두 개의 포인터를 사용하여 원하는 결과를 얻는 방법 다중 for문의 복잡도를 좀 더 선형적으로 풀 수 있다. - 두 개 포인터의 배치방법 1) 같은 방향에서 시작 : 첫번째 원소에 둘 다 배치 2) 서로 다른 뱡향에서 시작 : 첫번째 원소와 마지막 원소에 배치 투 포인터 예시 : 배열에서 부분합이 9가 되는 구간을 찾는 방법 - 기존 단순 for문 이용방법 [단순 for문 이용방법 - 코드로 봤을 때] import java.util.Arrays; public class Main { public static int[] forLoop(int[] arr, int target){ // for문을 이용한 방법 int[] result = {-1, -1}; // 구..
[Java] 트리(Tree) 트리(Tree)란? : 그래프의 일종으로, 정점과 간선을 이용하여 데이터의 배치 형태를 추상화한 자료구조이다. → 노드와 링크로 구성된 자료구조 / 계층적 구조를 나타낼 때 사용한다. 트리의 구조 / 용어 ㆍ노드(Node) : 트리 구조의 자료값을 담고 있는 단위 ㆍ간선(Edge) : 노드 간의 연결선( = link, branch) ㆍ루트 노드(Root) : 부모가 없는 노드 / 가장 위의 노드 ㆍ단말 노드(Leaf) : 자식이 없는 노드 ㆍ내부 노드(Internal) : 잎새 노드를 제외한 모든 노드 ㆍ부모(Parent) : 연결된 두 노드 중 상위의 노드 ㆍ자식(Child) : 연결된 두 노드 중 하위의 노드 ㆍ형제(Sibling) : 같은 부모를 가지는 노드 ㆍ깊이(Depth) : 루트에서 어떤 노..
[Java] Queue Queue란? : 선입선출(First In Frist Out(FIFO)) 자료구조 ( → 말 그대로 먼저 들어온 데이터가 가장 먼저 나가는 자료구조) 주로 입력 순서대로 데이터 처리가 필요할 때 사용한다. *Queue 선언 : Queue queue = new LinkedList(); -- Stack처럼 [Stack stack = new Stack(); // 이런식으로] 사용불가(바로 객체를 생성해서 만들수 있는게 X) 그래서 이때에는 LinkedList()를 사용하면 되는데, 이유는 LinkedList()에 Queue에 필요한 연산들이 들어가있기때문 만약 Queue queue = new Queue(); 를 선언하면? 더보기 이런식으로 주르륵 나와버린다..... import java.util.*; publ..
[Java] Stack Stack이란? : 후입선출(Last In Frist Out(LIFO)) 자료구조 ( → 말 그대로 마지막에 들어온 데이터가 가장 먼저 나가는 자료구조) 주로 데이터가 입력된 순서의 역순으로 처리되어야 할 때 사용된다. * Stack 선언 : Stack stack = new Stack(); object부분에는 String, Integer, Character 등 다양하게 사용 가능 Stack의 메소드(Push, Pop, Peek, Empty, Size, Contains) 1. 데이터 추가(Push) : .push()를 이용하여 데이터를 추가할 수 있다. 아래에서부터 데이터를 차곡차곡 쌓는다고 생각하면 된다. import java.util.Stack; public class Main { public stat..
[java] Dynamic Programming(DP / 동적 계획법) Dynamic Programming(DP / 동적계획법) 이란? : 재귀 알고리즘에서 동일한 하위 문제를 여러번 계산하는 것을 방지하는데 사용하는 기술 한 번 계산했던 부분을 다시 계산하지 않아서 속도가 빠르다는 특징이 있다. 동적 계획법 예제 [피보나치 수열] *피보나치 수열이란 ? 각 숫자가 앞의 두 수의 합인 수열 (ex. 0,1,1,2,3 일때) n = 항의 수 1. n