💡 새로 알게되었거나, 유용한 것들
replaceAll(”[^A-Z]”, “”) 대문자알파벳을 제외한(^는 부정기호) 모든 것을 대체
변수 최대 최소 초기화 해줄 때 Integer.MIN_VALUE, MAX_VALUE 활용하면 편하다.
int[] arr = new int[s.length()] 이런식으로 길이에 맞게 초기화 가능
HashMap 끼리 비교할 때는 equals
String to int, Int to String
Character to int, int to Character
Lambda를 이용해서 compare 확장 구현
Arrays.sort(arr,(e1,e2) -> {
if(e1[0]==e2[0]){
return e1[1]-e2[1];
} else{
return e1[0]-e2[0];
}
});
Comparator.comparing() 사용
Array에서 max 값 찾기
Array값의 합
.stream
nextInt → 입력받을 때 엔터(\n)를 제외하고 숫자만 가져옴
next → 개행문자를 무시하고 입력을 받는다
nextLine → 개행문자를 포함해서 한줄 단위로 입력 (nextInt 다음에 올 시 주의)
Integer.valuOf(char값) → ‘1’ 일 경우 1이 나오는 것이 아니라, 아스키 코드 값인 49가 나온다.
람다 이용해서 compareTo 간편적용
map.entrySet()
.stream()
.max((entry1,entry2) -> entry1.getValue() > entry2.getValue() ? 1 : -1)
.get()
.getKey());
Scanner의 nextLine()메소드를 이용하여 줄단위 입력을 받았을 때, \n(다음줄)이 buffer에 남아있게 된다.
따라서 더이상 입력받을 줄이 없을 때 NoSuchElementException에러가 나기 때문에 hasNextLine()을 이용하여 입력 완료 여부를 검사해야 한다.-> 이 말인 즉슨,
nextLine()으로 입력을 받으면 다음줄에서 깜빡깜빡 하고있는데 사실 입력된건 없음 -->NoSuchElementException 발생,
hasNextLine()은 문자열로 구성된 한 줄이 있는지를 검사해주기 때문에 (\n만 남아있으면 false 리턴) 다음줄을 입력받았는지 아닌지를 알 수 있는 것이다.
//순서 x, 중복 x 일 때는 HashSet으로 구현하자(속도 더 빠름)
백준 제출은 통과인데 IntelliJ는 무한 루프인 경우가 있다
조합구하기방식(nCm), 조합의 수 방식은 외우는게 좋다.
//조합 구하기
public void DFS(int L, int s){
if(L==m){
for(int x: combi) System.out.print(x+" ");
System.out.println();
}
else{
for(int i=s; i<=n; i++){
combi[L]=i;
DFS(L+1, i+1);
}
}
}
//조합의 수
public int DFS(int n, int r){
if(dy[n][r]>0) return dy[n][r];
if(n==r || r==0) return 1;
else return dy[n][r]=DFS(n-1,r-1)+DFS(n-1,r);
}
Disjoint 외우는게 좋다.
static intFind(intv){
if(v==unf[v])returnv;
else returnunf[v]=Find(unf[v]);
}