[알고리즘] JAVA 기술 정리글
Java 로 알고리즘을 풀면서, 사용한 기술에 대해서 정리한 글 입니다.
목록
- EOF 처리
- 앞뒤 공백 자르기
- 숫자 하나씩 자르기
- FastScanner
char
toint
구현
EOF 처리
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while ((line = br.readLine()) != null && line.length() != 0) { // ... } // 근데 엔터는 한번 더 쳐야된다는게 함정 Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { sc.nextLine(); } while(sc.hasNextInt()) { sc.nextInt(); }
앞뒤 공백 자르기
.trim
숫자 하나씩 자르기
public static int[] splitNumber (int n) { int size = String.valueOf(n).length(); int[] result = new int[size]; String temp = String.valueOf(n); String[] datas = temp.split(""); for (int i=0; i<size; i++) { result[i] = Integer.parseInt(datas[i]); } return result; }
FastScanner
class FastScanner { BufferedReader br; StringTokenizer st; FastScanner(InputStream i) throws Exception { br = new BufferedReader(new InputStreamReader(i)); } String next() throws Exception { while (st == null || !st.hasMoreTokens()) { st = new StringTokenizer(br.readLine()); } return st.nextToken(); } int nextInt() throws Exception { return Integer.parseInt(next()); } String nextString() throws Exception { String result = br.readLine(); return result; } }
**
char
toint**
char - '0'
배열 돌리기
(i+K) % A.length
로 인덱스를 구한 후, 원래 배열의 값으로 넣어주면 됨. 그리고 새로만든 배열 리턴hashSet
HashSet<Integer> intSet = new HashSet<>(); for (int arrayData : A) { if (intSet.contains(arrayData)) { intSet.remove(arrayData); continue; } intSet.add(arrayData); } return intSet.toArray(new Integer[intSet.size()])[0];
배열에서 짝 제외하고 홀로남은 수를 출력하는 코드이다. HashSet을 이용했으며, HashSet의 선언방법은 위와 같다.
add와 remove, contains 정도면 유용하게 사용할 수 있을 것 같다. Set의 특성상 중복적인 값은 허용되지 않으니
int [] array = { 1, 2, 3, 4 };
Arrays.fill(array, data);
정수 최댓값
Integer.MAX_VALUE 를 통해서 초기화 하고 최솟값을 구할 때 유용하게 사용
Double.MAX_VALUE 도 가능
boolean, Boolean
boolean 으로 하면 기본값이 전부 false, Boolean으로 하면 Arrays.fill 함수를 통해서 초기화 필요
List to Array (Integer 배열로 리턴이 필요할 경우)
list.stream().mapToInt(i->i).toArray()
String to Array
String[] ary = "abc".split("");
HashMap
HashMap<Integer, Integer> hashMap = new HashMap<>();
TreeMap은 Key를 기준으로 자동정렬을 진행한다
두개의 Max, Min
Math.max(1, 2) Math.min(1, 2)
제곱근 구하는 방법
(int)Math.sqrt(N);
절댓 값
Math.abs(data)