int[] -> List
1
| Arrays.stream(new int[] {0, 1, 2, 3}).boxed().collect(Collectors.toList())
|
List -> int[]
1
| List.of(0, 1, 2, 3).stream().mapToInt(Integer::intValue).toArray()
|
Swap을 활용한 Permutation
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
| public perm(int[] arr, int depth) { if(depth == arr.length) { print(arr, arr.length); return; }
for(int i=depth; i<arr.length; i++) { swap(arr, i, depth); perm(arr, depth + 1); } }
public void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }
public void print(int[] arr, int k) { for(int i=0; i<k; i++) { System.out.print(arr[i] + ", "); } System.out.println(""); }
|
Prefix를 활용한 Permutation
1 2 3 4 5 6 7
| public void perm(String pre, String src) { System.out.println(pre);
for(int i=0; i<src.length(); i++) { perm(pre + src.charAt(i), src.substring(0, i) + src.substring(i+1)); } }
|
String -> char[]
1
| char[] chars = str.toCharArray();
|
isPrime
1 2 3 4 5 6 7 8 9 10 11 12 13
| public boolean isPrime(int num) { if(num == 1) return false; if(num == 2) return true; if(num % 2 == 0) return false;
for(int i=3; i<=(int)Math.sqrt(num); i+=2){ if(num%i==0) return false; }
return true; }
|
Math.max(triangle[i][j], triangle[i][j + 1]);
배열 자를때 문자열로 변환해서 하면 쉽다 배열 변환시 String.valueOf 사용 혹은 Arrays.toString
int[] -> String[]
1
| Arrays.stream(numbers).boxed().map(String::valueOf).collect(toList())
|
String[] -> String
java 배열을 뒤집어주는 기능
1
| Collections.reverse(list);
|
테스트 셋의 종류
null을 넣는다던지, 엄청 큰값을 넣는다던지..원소가 하나만 있다던지, 음수값, 오버플로우값, 비어있는 배열에 접근, 초기값이나 마지막 값이 이벤트인 경우
Dynamic Programming - 카데인 알고리즘 (부분 배열의 최대 합 구하기)
유클리드 알고리즘
1 2 3 4 5 6 7 8 9
| private int gcd(int a, int b) { if(a % b == 0) { return b; } return gcd(b, a%b); }
|