전체 글 96

백준 1427 소트인사이드 [JAVA]

https://www.acmicpc.net/problem/1427 간단하지만 중요한 기본문제 해당 문제는 int 배열을 만들어 오름차순 정렬을 하면된다.물론 int 배열을 내림차순정렬하여 거꾸로 출력하는 방법도 있지만  오름차순 정렬를 하는 법을 활용해보겠다. 방법 1. 오름차순 직접 구현import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;class Main{ // 소트인사이드 백준 - 1427 public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new ..

알고리즘 2024.09.26

백준 12865 평범한 배낭 [JAVA]

0-1 KnapSack Problem대표적인 DP 문제 알고리즘 중 하나로 알려져 있다. DP 란, 큰 문제를 작은 문제로 나누어서 푸는 방법을 일컫는 말이다.최적 부분 구조를 가진다는 것은 전체 문제의 최적해가 부분 문제의 최적해들로써 구성된다는 것입니다.처음에는 Brute Force 로 접근하였지만 시간 복잡도가 2 ^n 으로  시간 초과가 날것이 분명했다.DP 문제를 풀기 위해서는 '최적의 원리' (Principle of Optimality) 가 성립하는지를 확인해야 하는데,최적의 원리는 다음과 같다. "어떤 문제의 입력사례의 최적해가 그 입력사례를 분할한 부분사례에 대한 최적해를 항상 포함하고 있으면.그 문제는 대하여 최적의 원리가 성립한다" 평범한 배낭 문제도 적용해 보자집합 A 를 n 개의 물..

알고리즘 2024.09.26

[Real Mysql 8.0] 5. 트랜잭션

5.1트랜잭션 트랜잭션은 작업의 완전성을 보장해줍니다. 즉 논리적인 작업셋을 모두 완벽하게 처리하거나, 모두 처리하지 못할 경우에는 원 상태로 복구하여 작업의 일부만 적용되는 현상(Partial update)이 발생하지 않게 만들어주는 기능입니다.트랜잭션은 커밋되거나 롤벡됩니다. 5.1.1 MySql 에서의 트랜잭션트랜잭션은 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두개이상의 쿼리가 있든 관계없이 논리적입 작업 셋 자체가 100% 적용되거나(commit을 실행했을때) 아무것도 적용되지않아야 (ROLLBACK) 함을 보장해주는 것입니다. InnoDB 스토리지엔진 (트랜잭션 지원) vs MyISAM (트랜잭션 미지원) 트랜잭션 관점에서 InnoDB 테이블과 MyISAM 테이블이 차이를 살펴보자 ..

[백준] 11729 : 하노이 탑 이동 순서

https://www.acmicpc.net/problem/11729 알고리즘원반이 한개면 그냥 옮기면 끝이다.(종료조건)원반이 n 개 일때1번 기둥에 있는 n개 원반 중 n-1 개를 목적지가 아닌 보조기둥(2번)으로 옮긴다.1번 기둥에 남아 있는 가장 큰 원반을 목적지(3번) 기둥으로 옮긴다.2번 기둥에 있는 n-1 개 원반을 다시 목적지(3번) 기둥으로 옮긴다.원반이 1 개일 때가 '종료 조건' 에 해당한다. 원반 n 개 문제를 풀려면 n-1 개 원반 문제를 풀어야 하는데 이는 바로 '좀 더 작은 값으로 자기 자신을 호출하는 과정'이다. 따라서 이 문제는 전형적인 재귀 호출 알고리즘에 해당한다(이승찬, 2017) import java.io.BufferedReader;import java.io.Input..

알고리즘 2024.09.24

[2장 객체 생성과 파괴] 아이템1. 생성자 대신 정적 펙터리 메서드를 고려하라.

정적 팩터리 메소드 : 생성자와 별도로 그 클래스의 인스턴스를 반환하는 단순한 정적메서드. public static void main(String[] args) { Boolean bool1 = new Boolean(true); // new 생성자로 인스턴스 생성 // public Boolean(boolean value) { // this.value = value; // } Boolean bool2 = Boolean.valueOf(true); // 정적 팩터리 메소드를 활용한 인스턴스 생성 // public static Boolean valueOf(boolean b) { // ret..

[자바] 정규표현식 정리 (ReplcaceAll)

정규표현식 문법과 예제^,$ - 문자열의 시작과 끝^regex : 문자열의 시작이 regex 에 해당하는 경우regex$ : 문자열의 끝이 regex에 해당하는 경우String result1, result2;String str = ".123!";result1 = str.replaceAll("^.", "*");System.out.println(result1);result2 = str.replaceAll("!$", "*");System.out.println(result2);// 출력*123!.123* [ ] - 문자의 집합 범위"." 는 일반적으로 모든 문자를 의미하지만 대괄호 '[]' 안에 있을 경우는 문자 그대로의 '.' 을 의미합니다/[abc] : a, b, c 중 문자 1개[abc][xyz] : a,..

알고리즘 2024.08.18

[자바정렬] Arrays.sort() Collections.sort()

1차원 배열 오름차순 정렬// 1차원 배열 오름차순 Sortint[] nums = { 2, 4, 9, 8};Arrays.sort(nums);System.out.println(Arrays.toString(nums));//결과 [2, 4, 8, 9] 1차원 배열 내림차순 정렬 (for문 활용)// 1차원 배열 내림차순 Sort   int[] nums = { 2, 4, 9, 8};        Arrays.sort(nums);        for(int i=0; i   1차원 배열 Stream 정렬 // 1차원 배열 내림차순 Sort   int[] nums = { 2, 4, 9, 8};   int[] descNums = Arrays.stream(nums)                   .boxed().sor..

알고리즘 2024.08.06