목차
입력
// main 함수에 throws IOException 추가
public static void main(String[] args) throws IOException
// BufferedReader 로 문자 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 여러 개 입력 받을 경우
StringTokenizer st = new StringTokenizer(br.readLine());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
// 한 개 입력 받을 경우
String s = br.readLine();
int n = Integer.parseInt(br.readLine());
출력
StringBuilder sb = new StringBuilder();
sb.append("abc").append("\n");
System.out.println(sb);
변환
// char -> int 변환
char charValue = '9';
int intValue = charValue - '0';
int intValue = Character.getNumericValue(charValue);
문자열
// String 선언
String str = "Hello world";
// 문자열 중 문자 하나 선택
char ch = str.charAt(0);
// 문자열 길이
int n = str.length();
// 문자열 동일 여부 확인
str.equals("Hello world");
// 문자열 나누기
String[] sp = str.split(" ");
// 문자열 앞뒤 자르기
str = str.substring(0, str.length() - 1);
// 문자열 포함 여부 확인
str.contains("He");
// 문자열 교체하기
str = str.replace("H", "h");
// 문자열 안에 문자가 숫자인지 확인
Character.isDigit(str.charAt(0));
// 문자열 안에 문자가 문자인지 확인
Character.isLetter(str.charAt(0));
// 대문자로 변환
str = str.toUpperCase();
// 소문자 변환
str = str.toLowerCase();
// 문자열 공백 제거
str.trim();
// 문자 배열로 변환
char[] ca = str.toCharArray();
List
// 선언, 생성
List<Integer> list = new ArrayList<>();
// 삽입
list.add(1);
list.add(2);
list.add(3);
// 조회
list.get(0);
// 값이 몇 번째 인덱스에 있는지 확인
list.indexOf(1);
Map
HashMap<String, Integer> map = new HashMap();
map.put("사과", 1);
map.put("apple", map.getOrDefault("apple", 0) + 1);
map.get("apple");
map.remove(1);
map.remove("apple");
// 키값의 배열 가져오기
map.keySet();
// 값의 배열 가져오기
map.values();
// 포함여부 확인
map.containsKey("apple");
// 교체하기
map.replace("apple", 10);
// 탐색하기
for(String key : map.keySet()) {
map.get(key);
}
Deque
// add, poll 뒤에 First 와 Last 가 들어간다.
Deque<Integer> que = new LinkedList<>();
int num = 1;
// add
que.addFirst(num); // 맨 앞에 추가
que.addLast(num); // 맨 뒤에 추가
// poll
que.pollFirst();
que.pollLast();
que.poll();
정렬
배열 정렬
Arrays.sort(routes, (a,b) -> Integer.compare(a[1], b[1]));
Collections 오름차순, 내림차순
import java.util.*;
ArrayList<Integer> list = new ArrayList<>();
// 오름차순 1 2 3 ... 10
Collections.sort(list);
// 내림차순 10 9 8 ... 1
Collections.sort(list, Comparator.reverseOrder());
PriorityQueue 정렬
// 내림차순 10 9 8 ... 1
PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> o2 - o1);
pq = new PriorityQueue<>(Collections.reverseOrder());
class 정렬
public class item implements Comparable<item> {
int index;
int play;
item(int index, int play) {
this.index = index;
this.play = play;
}
// play순으로 내림차순
// play가 같다면 index 오름차순
public int compareTo(item o) {
if(this.play == o.play) {
return this.index - o.index;
}
return o.play - this.play;
}
}
이분탐색
long start = 0;
long end = 987654321; // 문제에서 주어진 가장 최대의 경우
long answer = 0;
while(start <= end) {
long mid = (start + end) / 2;
// 조건식 (아무거나 쓴 거)
long temp = 0;
long n = 6;
// 조건이 정답보다 작아 start를 앞으로 땡겨야 할 때
// <
if(temp < n) {
start = mid + 1;
}
// 정답을 넣을 때
else {
end = mid - 1;
answer = mid;
}
}
return answer;
유니온 파인드
// 부모의 배열 parents의 초기화
main() {
int[] parents = new int[n];
for(int i = 0; i < n; i++) {
parents[i] = i;
}
}
// find : 부모를 찾아주는 함수
int find(int x) {
if(parents[x] == x) {
return x;
}
return parents[x] = find(parents[x]);
}
// union 함수
public void union(int x, int y) {
x = find(x);
y = find(y);
if(x != y) {
if(x < y) {
parents[y] = x;
}
else {
parents[x] = y;
}
}
}