게으른 개발자
JAVA 코딩테스트 대비 문법 정리 본문
알고리즘 문제는 주로 파이썬으로 푼다. 원래 C++로 문제를 풀었는데 코드량도 너무 많고, 이것저것 신경 써야 할 부분이 많아서 파이썬으로 넘어왔다. 파이썬으로 알고리즘 문제를 풀면 코드도 간결하고 변수 자료형을 신경 쓰지 않아도 되기 때문에 편하다. 대부분 알고리즘 테스트에 언어 제한을 두지 않지만, 간혹 직군에 따라 언어를 제한하는 경우가 있었다. 파이썬에 익숙해져 있는데 갑자기 다른 언어로 문제를 풀려고 하면 문법도 헷갈리고 시간도 많이 걸린다. 그래서 알고리즘 코딩 테스트 전에 빠르게 공부할 수 있도록 알고리즘에 필요한 자료구조와 문법을 정리해 본다.
데이터 입출력
데이터 입력 및 출력 방법
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out))) {
//readLine()은 문자열로 입력을 받아 반환
int string = br.readLine();
//read()는 입력값을 int로 변환하여 반환
int integer = br.read();
//출력 방법
bw.write(string);
bw.write(integer);
} catch (Exception e) {
e.printStackTrace();
}
데이터를 입력받아 공백을 기준으로 변수에 저장하는 방법
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out))) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
//출력 방법
bw.write(a + b);
} catch (Exception e) {
e.printStackTrace();
}
문자열로 입력받아서 공백을 기준으로 배열에 넣어주는 방법
String sp = br.readLine();
String array[] = sp.split(" ");
문자열
str.length() : 문자열의 길이 반환
str.isEmpty() : 문자열이 비어있는지 확인
str1.equals(str2) : 문자열을 비교할때 사용
str1.compareTo(str2) : 문자열을 사전순으로사전 순으로 비교한다. str1이 str2보다 사전 순으로 앞인 경우 -1, 같은 경우 0, 뒤인 경우 1을 반환
str.indexOf('c') : 문자열 'c'의 인덱스를 반환
str.lastIndexOf('c') : 문자열 'c'의 마지막 인덱스를 반환
str.subString(start, end) : start인덱스부터 end-1인덱스까지 문자열 자르기
str1.concat(str2) : 문자열 합치기
str.replace('변경될 문자열', '변경할 문자열') : 변경될 문자열을 변경할 문자열로 바꿔준다.
str.contains('k') : str문자열에 k라는 문자가 있는 경우 true반환
str.split(" ") : 괄호안의 매개변수를 기준으로 문자열 자르기
str.trim() : 문자열의 앞, 뒤의 공백을 제거
var.toString() : int형 변수를 string으로 변환
str.parseInt() : 문자형 변수 str을 int형으로 변경
str.append(), str1 + str2 : 문자열 더하기
자료구조
구조체 클래스
static class Node {
int y, x;
public Node(int x, int y) {
this.x = x;
this.y = y;
}
}
배열
//길이 N만큼의 배열 생성
int[] arr = new int[N];
//N * M 만큼의 배열 생성
int[][] arr2 = new int[N][M];
//배열에 데이터 추가
arr.append()
//배열 길이 확인 : 5
arr.length
//ArrayList 사용
List<String> str = new ArrayList<String>();
str.add("test");
//ArrayList 길이 조회
str.size()
스택
//stack 선언
Stack<Integer> stack = new Stack<>();
//stack에 값 추가
stack.push(1);
//stack에서 top의 데이터 확인
stack.peek();
//stack의 top 제거
stack.pop();
//stack 비우기
stack.clear();
//stack이 비어있는지 확인
stack.empty();
//stack에서 값 찾기
//값이 있다면 true, 없다면 false 반환
stack.contains(2);
큐
Queue<Integer> q = new LinkedList<>();
//큐에 데이터 추가
q.add(1);
q.add(2);
//큐의 첫번째 값 출력
q.peek();
//큐의 첫번째 값 삭제
q.remove();
//큐 초기화
q.clear();
//큐에 값이 있는지 확인
//값이 있는 경우 true 반환, 없으면 false 반환
q.contains(1);
우선순위 큐
PriorityQueue<Integer> pq = new PriorityQueue<>();
//우선순위큐에 값 추가
pq.add(1);
//우선순위 큐에서 가장 작은 값 반환
pq.peek();
//우선순위 큐에서 가장 작은 값 삭제
pq.remove();
//우선순위 큐에서 해당 숫자가 있는지 확인
pq.contains(2);
벡터
Vector<Integer> vector = new Vector<Integer>();
//벡터에 값 추가
vector.add(1);
//1번 인덱스의 원소 출력
vector.get(1);
//벡터의 크기 확인
vector.capacity();
//벡터 안의 원소 갯수 확인
vector.size();
작성한 글에 잘못된 부분이나 문제가 있는 경우 댓글에 작성해 주시면 수정하도록 하겠습니다 . 질문도 환영합니다! :)
'알고리즘' 카테고리의 다른 글
BOJ :: [11085] 군사 이동 (0) | 2021.09.13 |
---|---|
BOJ :: [13397] 구간 나누기 2 (0) | 2021.09.07 |
BOJ :: [5624] 좋은 수 (0) | 2021.09.04 |
BOJ :: [1600] 말이 되고픈 원숭이 (0) | 2021.08.27 |
BOJ :: [16434] 드래곤 앤 던전 (0) | 2021.08.16 |