코딩테스트

[코딩테스트, Java] 자바 코딩테스트 문법 정리

치킨유망주 2021. 12. 20. 01:56
import java.util.*;
import java.io.*;

ArrayList

  • 깊은복사
ArrayList<Integer> w=new ArrayList<Integer>();
ArrayList<Integer> copy_w=new ArrayList<Integer>();
copy_w.addAll(w);
  • Sort, Size
ArrayList<Integer> ArrList=new ArrayList<Integer>();
ArrList.sort(null);
ArrList.size();

List

  • set을 List로 변경하기 ⇒ List의 생성자에 set을 넣어준다.
Set<String> set = new HashSet<String>();
List<String> aList = new ArrayList<>(set);
  • Sort ⇒ List를 정렬할 때 Collections의 sort() 메소드를 이용한다.
  • Collections.sort()
  • add()
  • remove()
  • size()
List<Stirng> alist = new ArrayList<>();
Collections.sort(aList);
alist.add(1);
alist.remove(1);
alist.size();
  • List 초기화 ⇒ Arrays.asList({value, ...})
List<String> label = new ArrayList<>(Arrays.asList("zero","one","two","three","four","five","six","seven","eight","nine"));

Set

  • add(value)
  • remove(value)
  • size()
Set<String> set = new HashSet<String>();
set.remove("str");
set.size();

Map

  • put(key, value)
  • get(key)
  • map.containsKey("str") ⇒ "str"이라는 키가 존재하면 true 아니면 false
  • size()
Map<String, Integer> m = new HashMap<>();
map.put("str", 1);
map.get("str");
map.containsKey("str");
  • Map의 value로 Collection값 넣기(List 같은)
Map<String, List<Integer>> m = new HashMap<>();

if(m.containKey(str) == false) {
	List<Integer> list = new ArrayList<>();
	list.add(4);
	m.put(str, list);
}
else {
	m.get(str).add(4);
}

Iterator

  • map, set의 값을 조회할 때, set.iterator()를 사용해 반복자를 생성한다.
  • hasNext(), next()
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();

while(it.hasNext()){
	String a = it.next();
	System.out.println(a);
}
/*------------map------------------*/
Map<String,Integer> map=new HashMap<>();
Iterator<String> it= map.keySet().iterator();

while(it.hasNext()){
	String key=it.next();
	int value=map.get(key);
}

String

  • 소문자, 대문자 ⇒ toLowerCase(), toUpperCase()
  • 길이 ⇒ str.length()
String str ="ABC";
str = str.toLowerCase();

String str ="abc";
str = str.toUpperCase();
  • 문자열을 Array로 ⇒ split("")
String str ="ABC";
String[] Arr = str.split("");
//['A', 'B', 'C']
  • 문자열 자르기(SubString) ⇒ substirng()
String str ="1234567";
str.substring(3) // "4567", 3인덱스부터 끝까지
str.substring(2, 5) // "345", 2~(5-1)
  • 문자열 뒤집기(Reverse) ⇒ new StringBuilder(str).reverse().toString();
String str ="ABC";
String str = new StringBuilder(str).reverse().toString();
// "CBA"
  • replace(),
  • String a = Integer.toString(num);
  • int a = Integer.parseInt(str);
String str = "가는 나입니다.";
String text = str.replace('가', '는');
System.out.println(text);

입출력

  • BufferedReader
    • Enter를 경계로 입력값을 인식한다.
    • readLine() 메소드는 개행문자를 포함해 String형식으로 입력을 받아온다
import java.io.InputStreamReader;
import java.io.BufferedReader;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());

Queue

  • 생성
  • add()
  • poll()
import java.util.Queue;
Queue<Integer> queue = new LinkedList<>();
Qeueu<String> queue = new LinkedList<>();

queue.add(1);
queue.add("str");

int pop_data = queue.poll();
  • pair
    • java에서는 pair연산자를 구현해서 사용한다.
static class Node {
	int y;
	int x;
	int dict;
	Node(int y, int x, int dict) {
		this.y = y;
		this.x = x;
		this.dict = dict;
	}
}

Queue<Node> queue = new LinkedList<>();
queue.add(new Node(1,2,3));
Node node = queue.poll();

Stack

  • push()
  • pop()
  • clear()
  • peek() ⇒ 가상 상단의 값
  • empty()
  • size()
  • contains(1) ⇒ 스택에 1이 있다면 true
import java.util.Stack;
Stack<Integer> stack = new Stack<>();
Stack<String> stack = new Stack<>();

stack.push(1);
stack.push(2);

int a = stack.peek();
stack.pop(();

import java.io.*

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();
String str = sc.next();
public class main {
	public static void main(String[] args) {

	}
}
static class Node {
        int x, y, z;
        Node(int x, int y, int z) {
            this.x = x;
            this.y = y;
            this.z = z;
        }
    }
double avg = 3.14521984;
Math.round(avg); // 첫째자리 반올림
Math.round((avg*100)/100.0); // 3.14
Math.round((avg*1000)/1000.0); // 3.145
Math.abs(-1); // 1

int count = Collections.frequency(list, 3); // list에서 3의 개수 찾기
int temp = Integer.parseInt(str);

char[] chars = str.toCharArray(); // 문자열을 캐릭 
Character.isDigit(chars[i]); // char가 숫자인지 판별

list.set(1, 3); // 1인덱스의 원소를 3이라는 값으로 바꾼다.
Collections.sort(list, reverseOrder()); // 내림차순 정렬

// 2차원 리스트 생성과 초기화
List<List<Integer>> alist = new ArrayList<>();
for(int i = 0; i < n; i++) {
	List<Integer> temp = new ArrayList<>();
	for(int j = 0; j < n; j++) {
		temp.add(sc.nextInt());
	}
	alist.add(temp);
}

alist.add(0, 3); // 0인덱스에 3을 추가한다. 뒤의 데이터는 한칸씩 밀린다.