전체 글
List와 ArrayList의 모든 요소 가져오는 방법 3가지.
1. for문 List l = List.of("abc", "def", "ghi", "jkl"); for (int i = 0; i < l.size(); i++) { System.out.println(l.get(i)); } 2. 향상 된 for문 List l = List.of("abc", "def", "ghi", "jkl"); for (String s : l) { System.out.println(s); } 3. Iterator List l = List.of("abc", "def", "ghi", "jkl"); Iterator lIter = l.iterator(); while (lIter.hasNext()) { System.out.println(lIter.next()); } // List.of는 불변성을 가지..
ArrayList와 Vector의 차이?
ArrayList vs LinkedList vs Vector ArrayList와 Vector의 차이? Vector의 메소드들은 대부분 동기화가 되어 있다. 스레드가 안전하다는 뜻. 다중 스레드에서 데이터를 공유하는 상황에서 Vector를 사용할 수 있지만 안전한 만큼 성능 저하 발생. ArrayList의 메소드들은 대부분 동기화가 되어 있지 않다. 안전하진 않지만 빠른 성능을 보여준다.
ArrayList와 LinkedList의 차이?
ArrayList vs LinkedList vs Vector ArrayList와 LinkedList의 차이? ArrayList와 Vector의 기본 데이터 구조는 배열. LinkedList의 기본 데이터 구조는 Doubly LinkedList인 LinkedList. 데이터 구조, 배열은 원하는 요소를 바로바로 가져오기 쉽다. 하지만 배열의 가운데에서 추가, 삭제등을 한다면..? 새 배열을 만들어서 처리하는 등, 복잡하고 효율적이지 않다. 예를들어 [1, 2, 4, 5]가 있고 2와 4사이에 3을 추가해야 한다면 1. [1, 2] 뒤에 3을 추가한 뒤 [4, 5]를 만들어서 더하는 방법 2. 새 배열을 만들어 [1, 2] 추가 후 3 추가, [4, 5]추가 등 효율적이지 못하다. 장점 : 원하는 값을 바로..
불변성 / 가변성을 특징으로 갖는 것들
불변성 String, BigDecimal, Wrapper, List.of(), Map.of() 등.. 으로 만든다면 불변성을 가진다. 인스턴스를 만든 순간 부터 값을 바꿀 수 없다. 가변성 ArrayList, LinkedList, Vector 등.. 으로 만들면 가변성을 가진다. 값을 추가하거나 삭제가 가능하다.
![[백준/JAVA] 8958번 OX퀴즈](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0mh5X%2FbtrFvq5z4Rf%2FZUIh10YqokrCglZGbqQBi0%2Fimg.png)
[백준/JAVA] 8958번 OX퀴즈
import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for (int i = 0; i < t; i++) { // 입력받은 OX를 받자마자 쪼개서 배열에 넣어준다. String[] s = br.readLine().split(""); // O가 연속으로 나올 때 점수를 저장할 변수 int x = 0; // 1문제의 OX 점수를 ..
![[백준/JAVA] 5597번 과제 안 내신 분..?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzt3kX%2FbtrFuvZ4P9w%2Fai69sOYVjZvdysRFW8J55k%2Fimg.png)
[백준/JAVA] 5597번 과제 안 내신 분..?
import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 모든 인원만큼의 크기를 가진 배열 생성 int[] all = new int[30]; // while문, 과제 제출한 28명의 출석번호를 자신의 인덱스에 맞게 입력 int i = 0; while (i < 28) { int x = Integer.parseInt(br.readLine()); all[x-1] = x; i++; } StringBuilder sb = new StringBuilder(); // 과제를 제출..
![[백준/JAVA] 10807번 개수 세기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDmwst%2FbtrFoPehScZ%2F7s3vkKNgQckonPQyuN52c0%2Fimg.png)
[백준/JAVA] 10807번 개수 세기
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] arr = new int[Integer.parseInt(br.readLine())]; StringTokenizer st = new StringTokenizer(br.readLine()); for (int i = 0; i < arr.length; i++) { arr[i] = Integer.parseInt(st.nextToken()); } int v = Integer.par..
[백준/JAVA] 2675번 문자열 반복
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for (int i = 0; i < t; i++) { StringTokenizer st = new StringTokenizer(br.readLine(), " "); int r = Integer.parseInt(st.nextToken())..
JAVA 이상한 문자 만들기
class Solution { public String solution(String s) { // 문자열을 쪼개서 배열에 넣고 String[] arr = s.split(""); // 공백이 나오면 인덱스 초기화 시켜줄 변수 생성 int idx = 0; // 결과값을 담을 sb 생성 StringBuilder sb = new StringBuilder(); for (int i = 0; i < arr.length; i++) { // 공백일 경우 인덱스 초기화해서 각 단어의 시작 지점으로 만들어주고 if (arr[i].equals(" ")) { sb.append(" "); idx = 0; continue; // 단어부터 시작할 수 있게 다음 반복으로 넘어간다. } if (idx % 2 == 0) { // 단어의 ..
가변적 매개변수, 가변 인자
배열은 생성할 때부터 크기를 정해줘야 한다. 즉 길이가 변하지 않는다. 파라미터의 배열을 다 더하는 메소드가 있다고 했을 때 배열의 갯수가 매번 바뀐다면 파라미터의 개수에 따라 메소드를 새로 만들어줘야 할 것이다. 하지만 가변 인자를 사용하면 얘기가 달라진다. 가변 인자는 ...을 사용한다. 예를 들어 int를 여러개 입력 받을 경우 int... 변수명 이런식으로 사용한다. public int sum(int... values) { ... return sum; } public void print(int... i) { System.out.print(Arrays.toString(i)); } print(1, 2, 4); // [1, 2, 4] 배열로 저장되기 때문에 toString을 써주지 않으면 주소값이 나오..
[백준/JAVA] 2869번 달팽이는 올라가고 싶다
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { // 두번째 풀이 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); int v = Integer.parseInt(st.nextToken()); // 1 = v - a 하루를 빼뒀다..
[백준/JAVA] 2588번 곱셈
import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int a = Integer.parseInt(br.readLine()); int b = Integer.parseInt(br.readLine()); int u = a * (b % 10); int t = a * ((b / 10) % 10); int h = a * (b / 100); StringBuilder sb = new StringBuilder(); sb.append(u).append("\n"); sb.append(..
[백준/JAVA] 10952번 A + B - 5
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int a; int b; StringBuilder sb = new StringBuilder(); do { StringTokenizer st = new StringTokenizer(br.readLine()); a = Integer.parseInt(st.nextToken()); b = Integer.parseInt(st.nextToken()); // 추가 조건을 걸지 않으면 종료를 ..
[백준/JAVA] 2562번 최댓값
import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // max에 int 중 제일 작은 값 int max = Integer.MIN_VALUE; // 배열 생성 int[] arr = new int[9]; for (int i = 0; i max) { max = x; } } // 몇번째 요소인지 ..
[백준/JAVA] 10250번 ACM 호텔
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); StringTokenizer st; StringBuilder sb = new StringBuilder(); for (int i = 0; i < t; i++) { st = new StringTokenizer(br.readLine()); int h = Integer.parseInt(st.nextToken());..
[백준/JAVA] 5622번 다이얼
import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[] arr = br.readLine().toCharArray(); int seconds = 0; for (int i = 0; i < arr.length; i++) { switch(arr[i]) { case 'A': case 'B': case 'C': seconds += 3; break; case 'D': case 'E': case 'F': seconds += 4; break; case 'G': case '..
Array 타입에 대한 몇가지
1. 객체를 요소로 배열을 만들 수 있다. class Jina { .... } // 초기값은 null Jina[] jina = new Jina[1]; 초기값은 null. 2. 배열의 요소 한번에 출력 int[] arr = {1, 2, 3, 4, 5, 6, 7}; System.out.print(Arrays.toString(arr)); // [1, 2, 3, 4, 5, 6, 7] 3. 스태틱 메소드를 사용하여 배열의 모든 요소에 같은 값 한번에 넣기 Arrays.fill(배열, 넣을 값); // default 값은 0 int[] arr = new int[5]; // [0, 0, 0, 0, 0] Arrays.fill(arr, 123); // [123, 123, 123, 123, 123] 와 그 동안 반복문으로..
Dates 타입
Dates 타입은 자바8, Joda Framework에서 가져온 개념. 중요한 3가지 클래스를 가지고 있다. LocalDate 2022-06-15처럼 날짜 값을 가지고 있다. LocalDateTime 15:43:00.123456처럼 시간 값을 가지고 있다. 초 뒤의 숫자는 더 정밀한 단위의 시간을 나타내고 있다. LocalTime 2022-06-15T15:43:00.123456처럼 날짜와 시간 값을 가지고 있다. // 시점은 출력할 때가 기준 // 불변성을 가지기 때문에 값이 변경되진 않는다. LocalDate today = LocalDate.now(); // 오늘 년도 가져오기 today.getYear(); // 2022 // 오늘 요일 가져오기 today.getDayOfWeek(); // WEDNES..
Wrapper Class를 사용하는 이유와 생성
왜 Wrapper Class를 사용할까? 1. 추가적인 옵션 제공 // String에서 int값과 boolean 값을 가져올 수 있다. Integer hundred = Integer.valueOf("100"); Boolean t = Boolean.valueOf("True"); // 대문자도 가능 2. 유틸리티 메소드 제공 // float 정수값 가져오기 Float fW = Float.valueOf(57.0F); int floatToInt = fW.intValue(); // 2진법 형태의 String을 정수로 나타내도록 변환 Integer seven = Integer.valueOf("111", 2); // 다시 String으로 전환 Integer.toString(seven, 2); 3. 기본 값들을 컬렉션..
[백준/JAVA] 10818번 최소, 최대
import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 정수 개수 입력받고 int n = Integer.parseInt(br.readLine()); // 문자열 통째로 N개의 정수를 받는다. String s = br.readLine(); // 공백으로 나눠 배열에 저장 String[] arr = s.split(" "); // int로 형변환 한 배열의 첫번째요소를 기준으로 정함 int max = Integer.parseInt(arr[0]); int min = In..
[백준/JAVA] 2420번 사파리월드
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); long result = Long.parseLong(st.nextToken()) - Long.parseLong(st.nextToken()); if (result < 0) { result = result * (-1); } System.out.print(result); } } 문제에..
JAVA 수박수박수박수박수박수?
class Solution { public String solution(int n) { StringBuilder sb = new StringBuilder(); for (int i = 1; i
JAVA 짝수와 홀수
class Solution { public String solution(int num) { String answer = ""; if (num % 2 == 0) { answer = "Even"; } else { answer = "Odd"; } return answer; } }
JAVA 핸드폰 번호 가리기
class Solution { public String solution(String phone_number) { StringBuilder sb = new StringBuilder(); String answer = ""; for (int i = 0; i < phone_number.length(); i++) { if (i < phone_number.length() - 4) { sb.append("*"); } else { sb.append(phone_number.charAt(i)); } } return sb.toString(); } }
JAVA 직사각형 별찍기
import java.io.*; import java.util.*; class Solution { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); for (int i = 1; i
![[백준/JAVA] 11382번 꼬마 정민](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbN9IQu%2FbtrEywexIqX%2FodBFu2ThnH5k66Rgln0fPk%2Fimg.png)
[백준/JAVA] 11382번 꼬마 정민
import java.io.*; import java.util.*; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); StringBuilder sb = new StringBuilder(); sb.append(Long.parseLong(st.nextToken()) + Long.parseLong(st.nextToken()) + Long.parseLong(st.nextToken())); System..
참조 타입, 참조 타입은 메모리에 어떻게 저장이 될까?
참조 타입 간단하게 말하면 내가 생성하는 모든 클래스가 참조 타입. 자바 자체에 정의 된 클래스도 있다. 대표적으로 String, String도 참조 타입이다. 더보기 String의 길이를 알 수 있는 length()에 ()를 붙이는 이유 String s = "test";하고 나서 s의 길이를 알고 싶다면 어떻게 할까? length()를 쓴다. s.length() < 이 소괄호는 내가 생성한 클래스를 인스턴스화 하고 생성한 클래스의 메소드를 호출할 때 처럼 ()을 사용한다. = String은 Class이다. 내가 생성하는 클래스(참조 타입)로 인스턴스를 만들어 변수를 정의하면 참조 변수가 된다. 참조 타입은 메모리에 어떻게 저장이 될까? 자바 프로그램이 실행될 때 2가지 종류의 메모리가 있는데 Stack..
![[백준/JAVA] 11022번 A+B - 8](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz6vfX%2FbtrEulMHHdj%2F9hRkXYcqTdkTxkfRxfxcLk%2Fimg.png)
[백준/JAVA] 11022번 A+B - 8
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { // 두번째 풀이 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; StringBuilder sb = new StringBuilder(); int t = Integer.parseInt(br.readLine()); for (int i = 1; i
[백준/JAVA] 11021번 A+B - 7
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 테스트 케이스 개수 T int t = Integer.parseInt(br.readLine()); StringTokenizer st; StringBuilder sb = new StringBuilder(); for (int i = 1; i
[백준/JAVA] 15552번 빠른 A+B
import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); StringTokenizer st; StringBuilder sb = new StringBuilder(); for (int i = 1; i