Coding Test Study Memo
자주 쓰이는 문법들 정리하기 + 계속 추가하기
형변환
int to String
int i = 100;
String s = Integer.toString(i);
char to String
char c = 'A'
String s = Character.toString(c);
String to int
String s = "123";
int i = Integer.parseInt(s);
String to double
String s = "123";
double d = Double.parseDouble(s);
Array to List
import java.util.Arrays;
import java.util.List;
Integer[] result = {0,8,0,1};
List<Integer> relist = Arrays.asList(result);
sort
array
Arrays.sort(arr);
reverse
List
import java.util.Arrays;
import java.util.Collections;
Integer[] result = {0,8,0,1};
Collections.reverse(Arrays.asList(result));
문자열
String s = "abcd"
s = new StringBuilder(s).reverse().toString();
Stack
import java.util.Stack;
Stack stack = new Stack<>();
stack.push(0);
stack.pop();
while(!stack.empty()){
stack.pop();
}
Map
import java.util.HashMap;
import java.util.Map;
Map<Character, Character> map = new HashMap<>();
map.put('key', 'value');
if (map.containsKey('key')) {
map.get('key');
}
- map.containsKey(‘key’) : 키 값(‘key’)이 있는 지 여부
HashSet
HashSet<Integer> hs = new HashSet<>();
for (int i : nums) {
if ( hs.contains(i)) {
hs.remove(i);
//hs.clear();//모든 값 제거
} else {
hs.add(i);
}
}
return hs.iterator().next();
- hs.add(i) : 값 추가
- hs.remove(i) : 값 제거
- hs.clear() : 모든 값 제거
- hs.contains(i) : i 값이 있는 지 여부
- hs.iterator().next() : Iterator iter = hs.iterator(); 사용, 값 출력
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));//HashSet생성
System.out.println(set); //전체출력 [1,2,3]
Iterator iter = set.iterator(); // Iterator 사용
while(iter.hasNext()) {//값이 있으면 true 없으면 false
System.out.println(iter.next());
}
문자열 찾기
indexOf
String text = 'hello world!';
text.indexOf("hello");
- 값이 없을때 -1 반환
- 값이 있을때 첫 index 반환
문자열 붙이기
String += 보다는 StringBuilder 와 StringBuffer 사용
String의 주소값이 stack에 쌓이고 클래스들은 Garbage Collector가 호출되기 전까지 heap에 지속적으로 쌓이게 된다.
메모리 관리적인 측면에서는 비효울이다.
StringBuilder
StringBuilder sb = new StringBuilder();
stringBuilder.append("hello");
String s = sb.toString();
StringBuffer
StringBuffer sf = new StringBuffer();
stringBuilder.append("hello");
String s = sf.toString();
StringBuilder는 synchronization이 적용되지 않는다.
문자열 자르기
substring
String str = "HAPPYCODING";
str.substring(2) // 결과 : PPYCODING
str.substring(2,6) // 결과 : PPYCO
- str.substring(start) : start부터 끝까지 자르기
- str.substring(start,end) : start부터 end까지만 빼고 자르기
- index는 0부터시작
charAt
String str = "HAPPYCODING";
char c1 = str.charAt(0); // 결과 : H
char c2 = str.charAt(3); // 결과 : P
- str.charAt(index) : index위치에 있는 값 반환
- char 타입으로 반환
- index는 0부터시작
이분탐색 (Arrays API)
int x = Arrays.binarySearch(nums, target);
- 배열에 존재하는 숫자는 해당 위치를 양수로 반환 (0부터)
- 배열에 존재하지 않는 숫자는 아닌배열에서 자기위치를 찾아 음수로 반환 (-1 부터)
Arrays.sort(arr);
- 오름차순으로 정렬된 배열에만 사용 가능 https://code0xff.tistory.com/68
숫자 비교
Math.max(10, 20); // 결과 : 20
Math.min(10, 20); // 결과 : 10
- Math.max : 두 값 중 큰 숫자 반환
- Math.min : 두 값 중 작은 숫자 반환
대소문자 변환
String s = "Hello"
s.toLowerCase(); // 모두 소문자로
s.toUpperCase(); // 모두 대문자로
정규표현식
숫자와 영문 빼고 “” 처리
String s = s.replaceAll("[^A-Za-z0-9]", "");
왼쪽에 붙은 0 제거
String s = s.replace(/(^0+)/, "");
XOR 연산자
배열에서 중복되는 숫자가 없는 값 return
int res = 0;
for(int num : nums) {
res ^= num;
}
return res;
xor의 3 가지 속성
1) 교환 연산 (즉 a xor b = b xor a).
2) xor 자체가 0이라는 것. a xor a = 0.
3) 0 xor a = a.
ListNode
```
PREVIOUSCSS - 말줄임표(...) 사용