일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- java
- 백준
- 백준 16236
- 백준 16235
- JPA
- 파이썬
- with recursive
- springboot
- MSA
- java 기술면접
- spring oauth
- 백준 16719
- 프로래머스
- 백준 15685
- spring security
- sql 기술면접
- re.split
- spring cloud
- 백준 파이썬
- JVM
- 백준 17626
- MySQL
- Spring
- 프로그래머스
- 웹어플리케이션 서버
- 백준 19238
- Coroutine
- 백준 17779
- Kotlin
- Spring Boot
- Today
- Total
시작이 반
[Java] 코테 준비 ( 알아야할 것들) 본문
Import
import java.util.*;
Input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine(); < 한줄씩 읽기
StringTokenizer st = new StringTokenizer(br.readLine(), "기준"); < 기준 정해서 나누기
st.nextToken(); < 자른 문자열 하나씩 읽기
Math
Math.max() : 최대값
Math.min() : 최소값
Math.abs() : 절대값
Math.pow(x, y) : x의 y제곱승
Arrays
Arrays
1차배열 : Arrays.toStrign(배열)
2차배열 : Arrays.deepToString(배열)
배열 정렬
Arrays.sort(array)
배열 기준 정렬
Arrays.sort(array, (o1, o2) -> { return o1.기준 > o2.기준 ? 1: o1.기준 < o2.기준 ? -1 : 0 });
ex) 2차원배열 0열 기준 : Arrays.sort(array, (o1, o2) -> { return o1[0] > o2[0] ? 1: o1[0] < o2[0] ? -1 : 0});
배열복사
System.arraycopy(원본 배열, 몇번째 index 부터, dest, 몇번째 index 부터, 몇개 복사);
새로운 배열 = Arrays.copyOf(원본 배열, 몇개 복사); 원본 배열 처음부터 몇개 복사할것인지
새로운 배열 = Arrays.copyOfRange(원본 배열, 어디부터, 어디까지); 원본 배열의 몇번째 index부터 몇번째 index앞 까지 복할 것인지
배열비교
Arrays.equals( a, b ) //1차 배열
Arrays.deepEqulas( a, b ) //2차 배열
Collections
List, Map, Set 등
Collections.함수()
collection : 이터러블 한것들(?)
값 가져오기 collection.get(인덱스)
인덱스 가져오기 collection.indexOf(값)
값 수정 collection.set(인덱스, 값)
List 깊은복사
List<> a = new ArrayList<>();
List<> b = new ArrayList<>();
b.addAll(a);
List정렬
Collections.sort(list);
List 기준 정렬
Collections.sort(list, (o1, o2) -> { return o1.기준 > o2.기준 ? 1: o1.기준 < o2.기준 ? -1 : 0 });
Set
Set<> set = new HashSet<>();
- 중복허용x, 순서유지x
Set<> set = new TreeMap<>();
- 중복허용x, 정렬
Map
자주쓰이는게 HashMap, TreeMap 이있는듯
TreeMap은 넣자마자 키기준으로 정렬됨
Map.put() : 값 넣기
Map.get() : 값 가져오기
Map.replace() : 값 수정
Map.entrySet() : 키와 값의 집합
Map.keySet() : 키 집합
Map.values() : 값 집합
키 포함 확인
Map.containsKey("키");
Map.containsValue("값");
값 기준 정렬 Map -> list화
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, (o1, o2) -> { return o1.getValue() > o2.getValue()?1 : o1.getValue() < o2.getValue()?-1 : 0 });
Array, Collection
for ( : ) { } 로 반복 가능
문자열
문자열 비교
s1.compareTo(s2)
0 : 두개의 문자열이 동일
양수 : compareTo()를 호출하는 객체가 인자보다 사전적으로 순서가 앞설 때
음수 : 인자가 객체보다 사전적으로 순서가 앞설 때
숫자로 이루어진 문자열 2개를 합쳐서 큰 경우를 알고싶을때
-> 맨 앞자리로 정렬 후 앞자리가 같으면 (o1 + o2).compareTo(o2 + o1) 이용
문자열 대/소문자 변경
string.toLowerCase();
string.toUpperCase();
문자 대/소문자, 숫자 인지 확인
Character.isLowerCase(문자)
Character.isUpperCase(문자)
Character.isDigit(문자)
Character.toLowerCase(문자)
Character.toUpperCase(문자)
문자열 추가, 수정, 삭제할때는 StringBuilder를 사용하자
stringBuilder.charAt(인덱스); : 인덱스 값 가져오기
stringBuilder.append(값); : 마지막에 추가
stringBuilder.insert(인덱스, 값); : 인덱스부터 추가
stringBuilder.replace(인덱스, 인덱스, 값); : 인덱스 ~ 인덱스범위 값 수정
stringBuilder.deleteCharAt(인덱스); : 인덱스 값 삭제
stringBuilder.delete(인덱스, 인덱스); : 인덱스 ~ 인덱스-1 범위 값 삭제
stringBuilder.subString(인덱스, 인덱스); : 인덱스 ~ 인덱스-1 범위의 문자열
정규식에 맞는 표현을 삭제할때는 String을 사용하자
string.replaceAll("정규식", "바꿀문자"); : 정규식에 맞는 모든값 바꿈
string.replaceFirst("정구식", "바꿀문자"); : 정규식과 처음 맞는 값바꿈
정규식
[] : []안에 문자중 하나
a-z : 소문자
A-Z : 대문자
0-9 : 숫자
[^] : []안에 문자를 제외한 나머지
+ : 1개이상 문자 반복
{ x, } : x번이상 문자 반복
x? : x가 한번나오거나 안나옴
string.replaceAll("[^a-z0-9]", "") : 소문자, 숫자를 제외한 나머지 문자 제거
string.replaceAll("[.]+", "") = string.replaceAll("[.]{1,}", "") : .이 한번이상 연속으로 나오는 문자 제거
같은 문자 연속 : baabaaaa
\를 쓸려면 \를 하나더 써줘야함
([a-z])\\1{1,1} : 한문자 연속 ([a-z]+)\\1{1,1} : 문자패턴 연속
([a-z]) : a-z중 하나의 문자 ([a-z]+) : a-z 하나이상 문자
\1 : 앞에서 나온문자 하나 \1 : 앞에서 나온패턴(문자( 하나
{1, 1} : 1번 반복 {1, 1} : 1번 반복
baabaaaa-> aa, aa, aa baabaaaa ->baabaa, aa
int -> String : String.valueOf(int) or Integer.toString(int)
x -> String : String.valueOf(x)
x 는 숫자형, boolean, char, char[]
String -> int : Integer.parseInt(string) , Integer.parseInt(string, x) x진수값을 10진수로 바꿈
문자열str을 정규식에 맞는 문자별로 추출하기
import java.util.regex.*;
Pattern p = Pattern.complie(정규식);
Matcher m = p.matcher(str);
while (m.find()) m.group();
Stack
Stack<자료형> stack = new Stack<>();
stack.push(값);
stack.pop();
stack.peek(); : 맨위 값 리턴
stack.clear(); : stack 비우기
stack.isEmpty(); : boolean
stack.contains(값); : boolean
Queue
Queue<자료형> queue = new LinkedList<>();
queue.add(값);
queue.remove();
queue.peek(); : 첫번째 값 ( 삭제될 처음값, 삭제x )
queue.clear(); : queue 비우기
queue.isEmpty(); :boolean
queue.contains(값); : boolean
Queue
Heap으로 구현
PriorityQueue<Integer> pQueue = new PriorityQueue<>(); - min heap
PriorityQueue<Integer> pQueue = new PriorityQueue<>(Comparator.reverseOrder()); - max heap
기준 정하기
PriorityQueue pQueue = new PriorityQueue<>(
(o1, o2) -> { return o1.기준 > o2.기준? 1: o1.기준 < o2.기준? -1: 0; }
);
DFS
완탐
재귀로 푼다.
순열 - stack으로 인덱스 넣기
조합
BFS
완탐
큐로 푼다. 큐가 비어있을때까지 반복
- 시작 위치를 큐에 넣고 방문표시
- 큐가 비어있을때 까지 반복문
- 큐 remove -> 주변 노드 방문한 것인지 확인 -> 방문하지 않았으면 방문처리후 큐에 넣음
최대공약수
a > b
while( b != 0 ){
int temp = a % b;
a = b;
b = temp;
}
a -> 최대공약수
계속 추가
'Programming > Java' 카테고리의 다른 글
[Java] JVM GC란 (0) | 2023.01.25 |
---|---|
[Java] 2중 for문 한번에 탈출하기 (0) | 2021.11.01 |
[Java] SOLID (1) | 2021.05.10 |
[Java] Lombok (0) | 2021.01.25 |
[Java] Stream (0) | 2021.01.20 |