[JAVA]コードテスト構文


[追加中]
背中が大嫌いだけど、
coteでは検索環境やドキュメントが提供されない可能性があります.
知っておくべき文法を書いて、追加します.
(public static void main、変数宣言、classなどの作成は省略)import java.util.*でもいいです
入力と出力
import java.util.Scanner

        Scanner sc = new Scanner(System.in);
        int r = sc.nextInt();
        String s = sc.next();
        
3 3
AAA
BAB        << 이런거 쉽게 입력받으려면? 아래 코드         
CDC
for (int i = 0; i < r; i++) {
            String tmp = sc.next();
            for (int j = 0; j < c; j++) {
                road[i][j] = tmp.charAt(j);
            }
        }
入力の最適化
BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());
        
        // 또는 아래와 같이
        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());
        k = Integer.parseInt(st.nextToken());
}
BufferedReaderへの書き込みにはthrows IOExceptionまたはtryを使用して例外処理を行う必要があります
BufferedWriter
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

bw.write("test");

bw.flush(); // flush해야 출력됨
bw.close();
文字列
文字列の比較
str1.compareTo(str2); // str1이 사전순으로 앞서면 음수 반환
                      // 같으면 0 반환, str2가 사전순으로 앞서면 양수 반환
stringBuffer vs stringBuilder
stringBuilderがスレッドを考慮しない場合、パフォーマンスは向上します.
Scanner sc = new Scanner(System.in);

StringBuilder sb = new StringBuilder(sc.next());
		     // = new StringBuilder("zz");
             
sb.toString();
sb.append("zz");
sb.insert(1, "ang");
sb.substring(0, 3); // index : 0 ~ 2
sb.delete(1, 2); // index : 1 ~ 1
sb.deleteCharAt(1);
sb.setCharAt(0, 'z'); // 0번째를 'z'로 변경
sb.reverse();
データ構造
[]と宣言するとarr[0]のように
またはarr.get(0)
2 Dアレイ
int[][] arr = new int[3][3]; // new int [][]는 안됨

ArrayList<edge>[] graph;
graph = new ArrayList[n];

for (int i = 0; i < n; i++)
graph[i] = new ArrayList<>();
Queue
import java.util.LinkedList;
import java.util.Queue;

Queue<String> q = new LinkedList<String>();
q.add("q.offer도 있음(offer은 반환까지");
String s = q.poll();

while(!q.isEmpty()) {} // q.empty() 아님
PriorityQueue
PriorityQueue<edge> pq = new PriorityQueue<>();
// 역순서 : new PriorityQueue<>(Collections.reverseOrder());
オブジェクトのソートなどの特殊な状況が必要な場合.
クラスを定義し、implements Comparable<>を使用
class edge implements Comparable<edge> {
    int start;
    int end;
    int value;

    public edge(int start, int end, int value) {
        this.start = start;
        this.end = end;
        this.value = value;
    }

    @Override
    public int compareTo(edge n) {
        return Integer.compare(value, n.value);
        // 오름차순 정렬
        // value > n.value 값이 양수면 자리 변경
    }
}
Hashmap
Map<Character, myClass> myHashMap = new HashMap<>();

myHashMap.putIfAbsent('a', new myClass()); // (key, value)

myHashMap.get('a'); // key값으로 value 얻기
Set, iterator
static Set<String> mySet = new HashSet<String>();

mySet.add("test");

mySet.clear();

Iterator <String> it = mySet.iterator();

while(it.hasNext()) {

    String s = it.next();
    ...
}
数学Math.log Math.ceil計算の下部が2のログMath.log(n) / Math.log(2)BigInteger 1e91に10を乗じた9乗
1 e-9は1に10を乗じた-9平方を表し、-1 e 9は-1に10を乗じた9平方を表す
System.out.println(1e9); // 1.0E9
System.out.println(2e9); // 2.0E9
System.out.println((int)1e9); // 1000000000 (10억)
System.out.println((int)2e9); // 2000000000 (20억)
Integerの最低価格を表示
static final int INT_MAX = Integer.MAX_VALUE;