Java 자료구조

LeeKyoungChang·2022년 9월 3일
0
post-thumbnail

📚 2. Java 자료구조

✔ 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()을 사용하자!

  • 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();

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글

관련 채용 정보