✔ stack
import java.util.Stack; // import
Stack<Integer> stack = new Stack<>(); // int형 스택 선언
Stack<String> stack = new Stack<>(); // char형 스택 선언
stack.push(1); // stack에 값 1 추가
stack.push(2); // stack에 값 2 추가
stack.pop(); // stack에 값 제거
stack.clear(); // stack의 전체 값 제거 (초기화)
stack.peek(); // stack의 가장 상단의 값 출력
stack.size(); // stack의 크기 출력
stack.push(1);
: stack에 값 1 추가stack.pop();
: stack에 값 제거stack.clear();
: stack의 전체 값 제거 (초기화)stack.peek();
: stack의 가장 상단의 값 출력stack.size();
: stack의 크기 출력stack.empty()
: stack이 비어있는지 check (비어있다면 true)stack.contains(1)
: stack에 1이 있는지 check (있다면 true)
✔ Math
제곱수인 경우 약수의 개수가 홀수이다.
제곱수가 아니라면 약수의 개수가 짝수이다.
for (int i=left;i<=right;i++) {
//제곱수인 경우 약수의 개수가 홀수
if (i % Math.sqrt(i) == 0) {
answer -= i;
}
//제곱수가 아닌 경우 약수의 개수가 짝수
else {
answer += i;
}
}
java 알고리즘 문제풀 때
광대한 데이터양이거나, 광대한 문자열 처리라면 BufferedReader
그냥 누가 봐도 br 쓸 상황이면 br을 쓰고 간단한 문제는 Scanner
를 쓴다.
✔ Java에서 팔방면을 별명을 사용할 때 enum 사용하기
package Baekjoon;
enum Table {
R(0, 1),
L(0, -1),
B(-1, 0),
T(1, 0),
RT(1, 1),
LT(-1, 1),
RB(-1, 1),
LB(-1, -1);
private int x;
private int y;
Table(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
}
public class BJ1063 {
public static void main(String[] args) {
System.out.println(Table.L.getX() + " " + Table.L.getY());
}
}
✔️ Java에서 딕셔너리 key, value 사용하고 싶을 때는 Map을 사용한다.
Map<Integer, Character> map = new HashMap<>();
for (int i = 0; i < l; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
map.put(Integer.parseInt(st.nextToken()), st.nextToken().charAt(0));
}
int time = 0;
for (Map.Entry<Integer, Character> m : map.entrySet()) {
// 출력
}
✔ Java에서 Queue 에 x, y 좌표 저장하기
class node{
int x;
int y;
node(int x, int y){
this.x = x;
this.y = y;
}
int get(){
return this.x;
}
void set(int x){
this.x = x;
}
}
class Main(){
main(){
Queue<node> queue = new LinkedHashMap<>();
queue.add(new node(1, 2));
}
}
✔️ Java에서 HashMap() 대신 LinkedHashMap()을 사용하자!
✔️ Map에서 value 여러개 저장할 때
// create our map
Map<String, List<Person>> peopleByForename = new HashMap<>();
// populate it
List<Person> people = new ArrayList<>();
people.add(new Person("Bob Smith"));
people.add(new Person("Bob Jones"));
peopleByForename.put("Bob", people);
// read from it
List<Person> bobs = peopleByForename["Bob"];
Person bob1 = bobs[0];
Person bob2 = bobs[1];
✔️ Java에서 클래스 2차원 배열
class VisitedCnt{
int vc;
public VisitedCnt(){}
public VisitedCnt(int vc) {
this.vc = vc;
}
}
VisitedCnt[][] vc = new VisitedCnt[3][4];
✔️ Java에서 정렬을 할 때 Arrays.sort, compare을 사용하자
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
// 도착시간, 시작시간 기준으로 오름차순 정렬
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[1] == o2[1]){
return o1[0] - o2[0];
}
return o1[1] - o2[1];
}
});
✔️ Java에서 char -> int -> char형 변환
char a = 'a';
int num = 1;
char c = (char)(a + num);
print(c); // b
✔ String을 char 배열로 변경
char[] str = br.readLine().toCharArray();