항상 C++로 알고리즘 문제를 풀다가 백엔드 파트는 Java로 언어 제한을 둔 코딩테스트를 보게되어 문법 정리를 했다.
[Java] BufferedReader & BufferedWriter <-> [C++] cin & cout
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.IOException;
public class MainClass {
public static void main(String args[]throws IOException) {
BufferedReader br = new BufferedReader(new InputStreamReader(Sytem.in));
// readLine은 string 타입으로 받아옴
int num = Integer.parseInt(br.readLine());
// sout
System.out.print(num);
// BufferedWriter
BufferedWrtier bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(String.valueOf(num));
// 버퍼에 있는 내용 출력
bw.flush();
- [Java] ArrayList <-> [C++] Vector
import java.util.ArrayList;
public class MainClass {
public static void main(String args[]throws IOException) {
// 1차원
ArrayList<Integer> al = new ArrayList<>();
// 2차원
ArrayList<ArrayList<Integer>> al = new ArrayList<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for(int i=0;i<n;i++) {
al.add(new ArrayList<>());
StringTokenizer st = new StringTokenizer(br.readLine());
al.get(i).add(value);
}
for (int i = 0; i < 5; i++) {
al.add(new ArrayList<>());
for (int j = 0; j < 5; j++) {
al.get(i).add(i * 5 + j + 1);
}
}
// 초기화
al.clear();
al.addAll(Collections.nCopies(size, value));
ex) al.addAll(Collections.nCopies(ans.size(),false));
or
for(int i=0;i<ans.size();i++) {
al.add(false);
}
// 조회
al.get(idx);
// 정렬
al.sort();
// 크기
int size = al.size();
// 복사
ArrayList<Integer> temp = new ArrayList<>();
temp.addAll(al);
- [Java] Array <-> [C++] Array
int [] arr = new int[10];
int arr[] = {};
arr = new int[] {값, 값, 값...};
// 정렬
Arrays.sort(arr);
// 길이
arr.length;
// String -> 배열로
String st = "abced";
char[] cArr = str.toCharArray();
// 배열 자르기
// 범위는 시작점 ~ 끝점-1
int [] temp=Arrays.copyOfRange(arr,1,5);
- [Java] Set
import java.util.Set;
import java.util.HashSet;
public class MainClass {
public static void main(String args[]throws IOException) {
Set<String> s = new HashSet<String>();
// 추가
set.add("Hi");
// 삭제
set.remove("Hi");
// 조회
Iterator<String> it = s.iterator();
// 값이 존재하면
while(it.hasNext()) {
// 참조값 가져옴
String st = it.next();
}
// 크기
s.size();
- [Java] Map
import java.util.Map;
import java.util.HashMap;
public class MainClass {
public static void main(String args[]throws IOException) {
Map<String,Interger> m = new HashMap<>();
// 추가
m.put("key",1);
// 값 가져오기
m.get("key");
// 값 존재 확인
m.containsKey("key");
//조회
Iterator<String> it = m.keySet().iterator();
while(it.hasNext()) {
String key=it.next();
int value=m.get(key);
}
// 크기
m.size();
- [Java] Queue
import java.util.Queue;
import java.util.LinkedList;
Queue<Integer> q = new LinkedList<>();
// push
q.add(1); // 실패시 예외 발생
q.offer(1); // 실패시 false 반환
// pop
q.poll();
// front
q.element(); // 공백이면 예외 발생
q.peek(); // 공백이면 null 반환
// clear
q.clear();
// size
q.size();
- [Java] Stack
import java.util.Stack;
Stack<Integer> s = new Stack<>();
// push
stack.push(1);
stack.add(1);
// pop
stack.pop();
// top
stack.peek();
// size
stack.size();
// clear
stack.clear();
- [Java] Priority_Queue
import java.util.PriorityQueue;
// 오름차순
PriorityQueue<Integer> pq = PriorityQueue<>();
// 내림차순
PriorityQueue<Integer> pq = PriorityQueue<Integer>(Collections.reverseOrder());
// 삽입
pq.add(1);
// 삭제
pq.remove();
// top
pq.peek();
- [Java] Pair
Java에는 C++처럼 Pair 자료형이 없으므로 만들어 사용
public class MainClass {
static class Pair{
int a;
int b;
Pair(int a, int b) {
this.a=a;
this.b=b;
}
// 정렬 메서드
public int compareTo(Pair p) {
// 오름 차순
if (this.a != p.a) {
// 같으면 0, > 이면 1, < 이면 -1
return Integer.compare(this.a, p.a);
}
return Integer.compare(this.b, p.b);
// 내림 차순
if (this.a != p.a) {
return Integer.compare(p.a, this.a);
}
return Integer.compare(p.b, this.b);
}
}
PriorityQueue<Integer> pq = PriorityQueue<Integer>(Pair::compareTo);
- [Java] 인접 리스트
static ArrayList<Integer>[] graph;
graph = new ArrayList[n+1];
for(int i=1;i<=n;i++) {
graph[i]=new ArrayList<>();
}
for(int i=0;i<arr.length;i++) {
graph[v1].add(v2);
graph[v2].add(v1);
}
- [Java] String -> Array
String st= "Hi";
String[] arr = st.split("");
- [Java] String 추출
String st="HiHello";
st.substring(시작 idx, 끝 idx) -> 시작 ~ 끝-1
st.substring(2,4); // He
- [Java] String 뒤집기
String st = "Hi";
String nst = new StringBuilder(st).reverse().toString();
- [Java] String 값 변경
String st="Hello";
String nst=st.substring(0,2) + 'L' + st.substring(3); // HeLlo
StringBuilder st = new StringBuilder("Hello);
st.setCharAt(2,L); // HeLlo
- [Java] String <-> Int
// String to Int
String s = "Hi";
int num = Integer.parseInt(s);
// Int to String
int num = 123;
String s = Integer.toString(num);
or
String s = String.valueOf(num);
- [Java] Char <-> Int
// int to char
int num=5;
char c = (char)(num+'0');
// char to int
char c = '5';
int num = (num)(c-'0');
- [Java] String <-> Char
// char to String
char c1 = '5';
char c2[]={'a','b','c'};
String s1=String.valueOf(c1); // '5'
String s2=String.valueOf(c2); // abc
// String to char
String s1="5";
String s2="abc";
char c1=s1.charAt(0);
char c2=s2.toCharArray();
C++ 배열.size() -> Java 배열.length
Java 배열 - length
Java String - length()
Java List - size()
Java 배열 - arr[1]
Java String - str.charAt(1)
Java List - list.get(1) / list.set(1, 2)
C++ min,max -> Java Math.min, Math.max