코테 보기전에 휙 보려고 정리했던 글들
#해시를 사용한 집합과 맵 hash_set
오름차순
HashSet<String> set = new HashSet<>();
ArrayList<String> list = new ArrayList<>();
// 오름차순
Collections.sort(list);
//내림차순
Collections.sort(list, Collections.reverseOrder());
// 대소문자 구분없이 오름차순
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
- HashMap과 HashSet의 차이
HashMap은 중복 Key 값을 허용하지 않지만, 중복 Value 값은 허용한다.
ex. {'a': 1, 'b': 1, 'c': 2}
HashSet은 객체 자체를 데이터로 저장하기 때문에 중복을 허용하지 않는다.
ex. {'a', 'b', 'c'}
+HashMap이 HashSet보다 빠르다.
HashMap 값 추가
map.put(1,"사과"); //값 추가
map.remove(1); //key값 1 제거
map.clear(); //모든 값 제거
System.out.println(map); //전체 출력 : {1=사과, 2=바나나, 3=포도}
System.out.println(map.get(1));//key값 1의 value얻기 : 사과
숫자인지 아닌지 판단하기
Character.isDigit()
public static boolean isString(String question) {
for (int i = 0; i < question.length(); i++) {
if (Character.isDigit(question.charAt(i))) {
return true;
}
}
return false;
}
try {
Double.parseDouble(s);
return true;
} catch (NumberFormatException e) {
return false;
}
스택 push,pop 큐 offer,poll
- push() : 큐 맨 뒤에 데이터 추가 = enequeue
- pop() : 큐 맨 앞의 데이터 제거 = dequeue
- front() : 큐 제일 앞에 있는 값을 반환
- back() : 큐 제일 뒤에 있는 값을 반환
- size() : 큐에 저장된 데이터 갯수를 반환
- empty() : 큐가 비어있으면 true, 아닐 경우 false를 반환
큐명.메소드() 형태로 사용한다.
2차원 배열 오름차순 정렬
- 문자열일때
//사람의 정보를 입력받는 2차원 배열 선언
String[][] info = new String[N][2];
for(int i=0; i<N; i++){
st = new StringTokenizer(br.readLine());
info[i][0]= st.nextToken();
info[i][1]= st.nextToken();
}
// 오름차순으로 정렬하기
Arrays.sort(info, new Comparator<String[]>() {
public int compare(String[] o1, String[] o2) {
// 이름이 같으면 큰 키로 오름차순
if (o1.length == o2.length) {
return o1.length; // 사전 순 정렬
} else {
return o1.length - o2.length;
}
}
});
- 숫자일 때
// 함수형 인터페이스 Comparator 의 메서드 compare(e1,e2)
// 양수 반환 -> e1 인덱스 1 e2 인덱스 0
// 음수 반환 -> e1 인덱스 -1 e2 인덱스 0
Arrays.sort(xy, new Comparator<int[]>() {
@Override
public int compare(int[] x1, int[] x2) {
// 만약 y좌표 같으면
if (x1[1] == x2[1]) {
return x1[0] - x2[0]; // x 오름차순
} else {
return x1[1] - x2[1];
}
}
});
1차원 배열 내림차순
Arrays.sort(numbers, Collections.reverseOrder());
펠린드롬수
String str = br.readLine();
StringBuilder sb = new StringBuilder(str);
if (str.equals(sb.reverse().toString())) {
System.out.print(1);
} else {
System.out.print(0);
}
문자열 바꾸기
string = "My favorite song is snowman by sia"
# string.replace(문자열1, 문자열2)
# 문자열1을 문자열2로 변환
# My favorate song as snowman by saa
string.replace("i", "a")
# 삭제할 수도 있다
# My favorite is snowman by sia
string.replace("song", "")
# 공백 삭제
# Myfavoritesongissnowmanbysia
string.replace(" ", "")
소수구하기 -에라토스테네스의 체
boolean[] prime = new boolean[N + 1];
// 1은 소수가 아니므로 제외
prime[0] = prime[1] = true;
for (int i = 2; i <= N; i++) {
if (prime[i] == true) // 소수가 아니라면 계속!
continue; // 소수가 아니라면 continue
for (int j = 2 * i; j <= N; j += i)
prime[j] = true; // 소수의 배수는 소수를 약수로 가지므로 제외
}
// 소수 개수 구하기
for (int i = M; i <= N; i++) {
if (!prime[i])
sb.append(i).append("\\n");
}
덱
switch (order) {
case "push_front": //정수 X를 덱의 앞에 넣는다.
deque.offerFirst(Integer.parseInt(st.nextToken()));
break;
case "push_back": //정수 X를 덱의 뒤에 넣는다.
deque.offerLast(Integer.parseInt(st.nextToken()));
break;
case "pop_front": // 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
sb.append(deque.isEmpty() ? -1 : deque.removeFirst()).append("\\n");
break;
case "pop_back": // 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
sb.append(deque.isEmpty() ? -1 : deque.removeLast()).append("\\n");
break;
case "size"://덱에 들어있는 정수의 개수를 출력한다.
sb.append(deque.size()).append("\\n");
break;
case "empty"://덱이 비어있으면 1을, 아니면 0을 출력한다.
sb.append(deque.isEmpty() ? 1 : 0).append("\\n");
break;
case "front": //덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1
sb.append(deque.isEmpty() ? -1 : deque.peekFirst()).append("\\n");
break;
case "back": //덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1
sb.append(deque.isEmpty() ? -1 : deque.peekLast()).append("\\n");
break;
진수변환
// 10진수 -> N진수
Integer.toString(num, N진수);
//N진수 -> 10진수
nteger.parseInt(str, N진수);
int num2 = Integer.parseInt(num2Str, 2); //2진수 문자열
'알고리즘 공부' 카테고리의 다른 글
[JAVA] java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 (0) | 2022.12.11 |
---|---|
[자료구조] 덱 (0) | 2022.11.30 |
[구름 ] 단어의 개수 세기 자바(JAVA) (0) | 2022.11.30 |
[구름] 의좋은 형제 자바(JAVA) (0) | 2022.11.30 |
[구름] [알고리즘먼데이] 출석부 JAVA (0) | 2022.11.30 |