JAVA (개념, 알고리즘)
-
ArrayList를 배열로, 배열을 ArrayList로 변환하기 위한 조건이 한 개 있다.자료형이 일치해야 한다.ArrayList -> 배열로 변환하기아래는 String 클래스 자료형을 이용한 변환 예제이다.1. for문 사용하기ArrayList list = new ArrayList(); list.add("Test1"); list.add("Test2"); list.add("Test3"); String[] array = new String[list.size()]; int size = 0; for (String temp : list) { array[size++] = temp; }별 다른 메소드 사용 없..
ArrayList <-> 배열 변환하기ArrayList를 배열로, 배열을 ArrayList로 변환하기 위한 조건이 한 개 있다.자료형이 일치해야 한다.ArrayList -> 배열로 변환하기아래는 String 클래스 자료형을 이용한 변환 예제이다.1. for문 사용하기ArrayList list = new ArrayList(); list.add("Test1"); list.add("Test2"); list.add("Test3"); String[] array = new String[list.size()]; int size = 0; for (String temp : list) { array[size++] = temp; }별 다른 메소드 사용 없..
2024.08.14 -
Collections클래스는 Collection 인터페이스를 구현한 클래스에 대한 객체 생성, 정렬, 병합, 검색 등의 기능을 안정적으로 수행하도록 도와주는 utility 클래스이다.이는 Generic 기술을 사용하여 작성되었으며, 정적 메소드의 형태로 되어있다. Generic 이란?=> 데이터 타입을 일반화한다는 의미이다.클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시 미리 저장하는 방법을 말한다.이렇게 컴파일을 하게 되면, 미리 타입 검사를 할 수 있으며, 이는* 클래스나 메소드 내부에서 사용되는 객체의 안정성을 높인다.* 반환값에 대한 타입 변환 및 타입 검사에 들어가는 과정을 감소시킬 수 있다. 자주 사용되는 알고리즘으로는 정렬(Sorting), 섞기(Shuffling), 탐색(Searc..
Collections 클래스로 객체 생성, 정렬, 병합, 검색하기Collections클래스는 Collection 인터페이스를 구현한 클래스에 대한 객체 생성, 정렬, 병합, 검색 등의 기능을 안정적으로 수행하도록 도와주는 utility 클래스이다.이는 Generic 기술을 사용하여 작성되었으며, 정적 메소드의 형태로 되어있다. Generic 이란?=> 데이터 타입을 일반화한다는 의미이다.클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시 미리 저장하는 방법을 말한다.이렇게 컴파일을 하게 되면, 미리 타입 검사를 할 수 있으며, 이는* 클래스나 메소드 내부에서 사용되는 객체의 안정성을 높인다.* 반환값에 대한 타입 변환 및 타입 검사에 들어가는 과정을 감소시킬 수 있다. 자주 사용되는 알고리즘으로는 정렬(Sorting), 섞기(Shuffling), 탐색(Searc..
2024.08.14 -
동적 계획법을 풀이하면서, 배낭 문제의 개념을 꼭 숙지하고 있으면 좋을 것 같다는 생각이 들었다.이와 관련된 문제를 보며, 냅색 알고리즘을 이해해보도록 하자.문제url : https://www.acmicpc.net/problem/12865 문제에서는 n=4, k=7이고 각 물건의 무게와 가치가 주어졌다.6 13 4 8 3 6 5 12 1번 물건2번 물건3번 물건4번 물건W(무게)6435V(가치)138612DP를 사용하여 문제를 풀이한다고 할 때, dp[i][j]의 의미는 아래와 같다.dp[i][j] = 처음부터 i번째까지의 물건을 살펴보고, 배낭의 용량이 j일 때 배낭에 들어간 물건의 가치합의 최댓값따라서, 우리가 찾고자 하는 값은 dp[n][k]이다.dp[i][j]는 dp[i-1][j]와 dp[i-1]..
배낭 문제 (Kanpsack Algorithm)동적 계획법을 풀이하면서, 배낭 문제의 개념을 꼭 숙지하고 있으면 좋을 것 같다는 생각이 들었다.이와 관련된 문제를 보며, 냅색 알고리즘을 이해해보도록 하자.문제url : https://www.acmicpc.net/problem/12865 문제에서는 n=4, k=7이고 각 물건의 무게와 가치가 주어졌다.6 13 4 8 3 6 5 12 1번 물건2번 물건3번 물건4번 물건W(무게)6435V(가치)138612DP를 사용하여 문제를 풀이한다고 할 때, dp[i][j]의 의미는 아래와 같다.dp[i][j] = 처음부터 i번째까지의 물건을 살펴보고, 배낭의 용량이 j일 때 배낭에 들어간 물건의 가치합의 최댓값따라서, 우리가 찾고자 하는 값은 dp[n][k]이다.dp[i][j]는 dp[i-1][j]와 dp[i-1]..
2024.07.24 -
String은 불변 속성을 가지며, StringBuffer와 StringBuilder는 그렇지 않다.즉, String은 concat이나 + 연산을 통해 값을 변경하게 되면, 기존의 String 메모리에서 값이 바뀌는 것이 아니라 기존의 String에 들어있던 값을 버리고 새로운 값을 할당받게 된다. 따라서 처음 할당한 String의 메모리 영역은 Garbage로 남아있다가 GarbageCollection에 의해 없어지게 된다. String은 불변성을 가지기 때문에 변하지 않는 문자열을 자주 읽어들이는 경우 사용하면 유리하다. 하지만 문자열 추가, 삭제, 수정 등의 연산이 자주 일어나는 경우에는 힙 메모리에 Garbage가 생성되고, 이는 힙 메모리 부족으로 이어져 프로그램의 성능에 치명적 영향을 끼칠 수..
StringBuilder 사용법 (StringBuffer, String과 비교)String은 불변 속성을 가지며, StringBuffer와 StringBuilder는 그렇지 않다.즉, String은 concat이나 + 연산을 통해 값을 변경하게 되면, 기존의 String 메모리에서 값이 바뀌는 것이 아니라 기존의 String에 들어있던 값을 버리고 새로운 값을 할당받게 된다. 따라서 처음 할당한 String의 메모리 영역은 Garbage로 남아있다가 GarbageCollection에 의해 없어지게 된다. String은 불변성을 가지기 때문에 변하지 않는 문자열을 자주 읽어들이는 경우 사용하면 유리하다. 하지만 문자열 추가, 삭제, 수정 등의 연산이 자주 일어나는 경우에는 힙 메모리에 Garbage가 생성되고, 이는 힙 메모리 부족으로 이어져 프로그램의 성능에 치명적 영향을 끼칠 수..
2023.03.05 -
사용법은 아래와 같다.import java.io.*;import java.util.*;class Main { public static void main(String[] args) throws IOException { //입력 시 필요한 BufferedReader BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String s = bf.readLine(); // 공백단위로 데이터를 가공하려면 다음과 같은 작업을 해줘야 한다. // 1번 방법 StringTokenizer st = new StringTokenizer(s); int a ..
BufferedReader와 BufferedWriter사용법은 아래와 같다.import java.io.*;import java.util.*;class Main { public static void main(String[] args) throws IOException { //입력 시 필요한 BufferedReader BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String s = bf.readLine(); // 공백단위로 데이터를 가공하려면 다음과 같은 작업을 해줘야 한다. // 1번 방법 StringTokenizer st = new StringTokenizer(s); int a ..
2023.03.05 -
1. 계단 오르기 (피보나치)철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다. 만약 총 4계단을 오른다면 그 방법의 수는1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2 로 5가지이다.그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가?입력첫째 줄은 계단의 개수인 자연수 N(3≤N≤35)이 주어집니다. 출력첫 번째 줄에 올라가는 방법의 수를 출력합니다.예시 입력 1 7예시 출력 121[코드]import java.util.*;class Main { static int[] dy; public int solution(int n) { dy[1] = 1; dy[2] = 2; for(int i=3; i 2. 돌다..
Dynamic Programming(동적계획법) - 기초1. 계단 오르기 (피보나치)철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다. 만약 총 4계단을 오른다면 그 방법의 수는1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2 로 5가지이다.그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가?입력첫째 줄은 계단의 개수인 자연수 N(3≤N≤35)이 주어집니다. 출력첫 번째 줄에 올라가는 방법의 수를 출력합니다.예시 입력 1 7예시 출력 121[코드]import java.util.*;class Main { static int[] dy; public int solution(int n) { dy[1] = 1; dy[2] = 2; for(int i=3; i 2. 돌다..
2023.02.19