Skip to content

Latest commit

 

History

History
213 lines (158 loc) · 4.8 KB

Java PS Team Note.md

File metadata and controls

213 lines (158 loc) · 4.8 KB

Java PS Team Note

  • 최대공약수 (GCD)

    // Without library
    public int gcd(int a, int b) 
    { return b==0 ? a : gcd(b, a%b); }
    
    // With built-in library
    gcd = BigInteger.valuOf(a).gcd(BigInteger.valuoOf(b)).intValue();
  • 문자열 복사

// Python의 "*"*n와 같음
Optional<String> result = Stream.generate(() -> "*").limit(i%(n+1)).reduce((a, b) -> a + b);
            System.out.println(result.get()) ;

Stream.generate(() -> "*").limit(n).reduce((a, b) -> a + b);
  • Char array => String
String stringRef= String.valueOf(charArray)
  • Sort reference type array
// 기본 오름차순 정렬은 {premitiveType, String}만 지원

// startIdx ~ (endIdx-1)의 구간만 정렬
Arrays.sort(typeArr, startIdx, endIdx)
  
// comparator가 -1가 되도록 정렬 (레퍼런스 type만 해당함)
// 1. 오름차순
Arrays.sort(typeArr, (o1, o2) -> o1 - o2)
// 2. 내림차순
Arrays.sort(typeArr, (o1, o2) -> o2 - o1)
  • Retrive value in Map
 	// 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환한다.
	map.getOrDefault(Object key, V defaultValue)
  
  // 사용 예시
  Map<String, Integer> map = new HashMap<>();
  for (String key : combination) {
    map.put(key, map.getOrDefault(key, 0) + 1);
  }
  • List => String Array
List<String> ansList = new ArrayList<>();
....
// Convert arrayList => String[]  
String[] answer = new String[ansList.size()];
ansList.toArray(answer);
  • List (arrayList, linkedList, ...) Collections 소속 클레스 기본 정렬
// Return Type void
Collections.sort(List);
  • Char[] => String
String str = String.valueOf(charArray)
  • 파이썬에서 1 in [1, 2 ,3]과 같이 포함여부 확인하는 기능
String[] values = {"AB","BC","CD","AE"};
boolean contains = Arrays.stream(values).anyMatch(x -> x == equals);
  • 자바에서는 파이썬과 같이 "String" == "String"을 하면 안됨
// 객체는 그냥 부르면 주소 값을 뱉음으로 == 비교 불가능
(X) "String" == "String"

// 아래와 같이 String의 내부 method를 활용하여 비교를 수행하여야함
"String".equals("String")
  • DFS 사용시 visited 사용 Pattern
        for (int i = 0; i < words.length; i++) {
            if (!visited[i] && check(begin, words[i])) {
                //해당 DFS로 진입할 때 visited 처리
              	visited[i] = true;
                dfs(words, words[i], target, cnt + 1);
                // 다음 차례의 dfs의 경로는 해당 node를 다시 방문해야할 수 있음으로 방문 기록 지워줘야함
                visited[i] = false;
            }
        }
  • Fibonacci 제귀함수 구현 Best Practice
import java.util.Scanner;

public class Quiz11_04 {
    static int n;
    static int arr[];

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
				
      	// n 받아서, 여기까지의 피보나치 수 구하여랴!
        n = sc.nextInt();
        arr = new int[n+1];

        arr[1] = 1;
        arr[2] = 2;

        f(n);

        System.out.println(arr[n]);
    }

    private static int f(int n) {
        if (arr[n] == 0) return arr[n] = f(n - 1) + f(n - 2);
        return arr[n];
    }
}
  • Binary Search
public static int binarySearch(int[] list, int key){
  int low = 0;
  int list.length - 1;
  
  while(high >= low){
    int mid = (low + high) / 2;
    if (key > list[mid]) 
      low = mid +1;
    else if (key == list[mid])
      return mid;
    else
      high = mid - 1;
  }
  return - 1 - low; 
}
  • Queue
// 라이브러리 import
import java.util.LinkedList;
import java.util.Queue;

// LinkedList를 활용하여 Queue 초기화
Queue<Integer> q = new LinkedList<>(); // Integer 말고도 다른 DataType Generic으로 사용가능

// 삽입 (Create)
q.add(1); // 삽입에 성공시 true, 실패하였을 경우 Exception 반환 
q.offer(2); // 삽입에 성공시 true, 실패하였을 경우 false 반환 

// 참조 (Read)
queue.peek(); // Queue의 첫번째 값 참조

// 반환 (Read and Delete)
q.poll(); // Queue의 첫번째 값을 반환. 비어있다면 null 반환

// 제거 (Delete)
q.remove(); // Queue의 첫번째 값 제거
q.clear(); // Queue의 값 전체 초기화
  • 좌우로 모두 접근 가능 할 때 특정 알파벳과의 거리
String str = "string";
dist = Math.min(str.charAt(i) - 'A', 'Z'- str.charAt(i) + 1);
  • Covert Sting to integer, or double
// Integer.parseInt("number", base)
// number가 base 진수로 되어 있다고 생각하고 10진수로 변환
Integer.parseInt("2018", 10); // 2018
Integer.parseInt("2018", 10); // 2018

// Double도 위와 같음
Double.parseDouble("1.111") // 1.111
  • String parsing examples
substring
split("")