문제 https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 풀이 이 문제는 DFS와 백트래킹을 사용하여 해결할 수 있다. DFS를 통해 모든 원소를 탐색하면서 색종이를 붙일 수 있는지 체크한다. 이때 색종이의 개수를 저장하는 배열을 하나 만들고, 색종이를 붙일 수 있다면 색종이를 붙인다. 이후 다시 dfs 탐색을 진행하는 식으로 해결하면 된다. 코드 import java.io.*; import java.util.*; public class ..
문제 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 나는 이 문제를 Abs라는 클래스를 만들어 해결하였다. Abs 클래스는 Comparable 인터페이스를 구현하는 클래스로, 원래 자기의 값인 int num 멤버와 절댓값인 int abs를 멤버로 갖는다. 또한 compareTo 메소드를 Override하여 절댓값(abs)을 기준으로 작은 순, 절댓값이 같다면 원래 값(num)이 작은 순으로 정렬되게 한다. 이후 Ab..
문제 https://www.acmicpc.net/problem/14431 14431번: 소수마을 첫 번째 줄에 소수 마을의 위치 (X1,Y1)와 A마을의 위치 (X2,Y2)가 입력된다. 두 번째 줄에 경유할 수 있는 마을의 개수 N (0 ≤ N ≤ 4000)가 입력된다. 세 번째 줄부터 N+2번째 줄까지 경유 할 수 있는 마 www.acmicpc.net 풀이 이 문제는 소수를 구하는 알고리즘과 다익스트라 알고리즘을 이용해 해결할 수 있다. 1. 모든 정점들의 거리를 구하면서, 거리가 소수인 정점들만 연결한다. 2. 연결한 그래프를 다익스트라 알고리즘을 통해 최단거리를 계산한다. 이때 거리가 소수인지 판단하는 것은 에라토스테네스의 체 알고리즘을 사용해 미리 소수들을 구해놓았다. 코드 HTML 삽입 미리보기..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%B9%B4%ED%83%88%EB%A1%9C%EA%B7%B8/ [DB] 시스템 카탈로그(System Catalog)란? - 코드 연구소1. 시스템 카탈로그란 DBA의 도구로서 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보를 수록한 시스템 테이블이다.code-lab1.com 시스템 카탈로그란?1. DBA의 도구로서 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보를 수록한 시스템 테이블이다.2. 하나의 작은 데이터베이스 데이터 사전(Data dictionary)라고도 한다.3. DDL의 결과로 생성되는 기본..
블로그 이사합니다아래에서 확인 가능합니다. https://code-lab1.com/%EC%98%B5%ED%8B%B0%EB%A7%88%EC%9D%B4%EC%A0%80/ [DB] 데이터베이스 옵티마이저(Optimizer)란? 옵티마이저 종류 2가지 - 코드 연구소옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해 주는 DBMS 내부의 핵심 엔진이다. 사용자가 구조화된 질의어(SQL)로 결과 집합을 요구하면, 이를 생성하는데 필요code-lab1.com 데이터베이스 옵티마이저란?옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해 주는 DBMS 내부의 핵심 엔진이다. 사용자가 구조화된 질의어(SQL)로 결과 집합을 요구하면, 이를 생성하는데 필요한 처리경로는 D..
문제 https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 풀이 이 문제는 에라토스테네스의 체로 소수를 구한 다음, 투 포인터 알고리즘을 사용하는 것이 핵심이다. 먼저 에라토스테네스의 체를 사용하여, N까지의 모든 소수를 저장한다. 이후 투 포인터 알고리즘을 사용하기 위해 left 포인터와 right 포인터를 0으로 초기화한다. 어떤 수든 첫번째 소수는 2기 때문에 sum=2로 초기화해준다. 만약 sum이 N과 같다면 ans를 1 증가시키고, N보다 작다면 right 포인터를 오른쪽으로 한 칸 옮기고 sum에 올려준다. N보다 크다면 left 포인터가 가리키는 값을 감..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/%EA%B4%80%EA%B3%84%EB%8C%80%EC%88%98/ [DB] 관계대수, 관계해석이란? - 코드 연구소관계대수는 관계형 데이터베이스에서 원하는 정보를 검색하기 위해 어떻게 유도하는가(how)를 기술하는 절차적인 언어이다. 즉, 관계 대수는 릴레이션을 처리하기 위해 연산자와 연산 규칙을code-lab1.com 관계 대수란?관계 대수는 관계형 데이터베이스에서 원하는 정보를 검색하기 위해 어떻게 유도하는가(how)를 기술하는 절차적인 언어이다. 즉, 관계 대수는 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어로, 피연산자가 릴레이션이고 결과 또한 릴레이션이다. 질의에 대한 해를 구하기 위해 수행해야 할..
문제 https://programmers.co.kr/learn/courses/30/lessons/42892 코딩테스트 연습 - 길 찾기 게임 [[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] programmers.co.kr 풀이 이 문제는 트리의 성질에 대해 잘 안다면 쉽게 해결할 수 있는 문제이다. 직접 이진트리를 구현하여 전위 순회, 후위 순회로 트리를 탐색하기만 하면 된다. 이때 이진트리를 구현하기 위해 Node 구조체를 만들어야 한다. 이후 y좌표가 큰 순서대로, y좌표가 같다면 x좌표가 작은 순서대로 정렬하여 저장한 리스트를 탐색하면서 이진트리를 구성하면 된다. 자세한..
String Constant Pool이란? 아래와 같은 코드를 살펴보자. String a = "Java"; String b = "Java"; String c = new String("Java"); // 결과 : same if(a == b) { System.out.println("same"); }else { System.out.println("different"); } // 결과 : different if(a == c) { System.out.println("same"); }else { System.out.println("different"); } a와 b는 같다고 나오지만, a와 c는 다르다고 결과가 나온다. 이유가 뭘까? 자바의 String은 두 가지 방법으로 생성할 수 있다. 첫 번째 방법으로 문자열..
IoC(Inversion of Control)란? IoC는 제어의 역전이라는 뜻으로 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 말한다. 이전에는 개발자가 객체를 생성하고 관리하며 프로그램의 제어 흐름을 스스로 조종했다. 하지만 Spring을 사용하면 스프링 컨테이너가 프로그램의 제어흐름을 제어하게 된다. DI(Dependency Injection)란? DI는 의존관계 주입이라는 뜻으로 여기서 의존관계(Dependency)는 어떠한 객체와 같이 수행(work with)되는 다른 객체와의 관계를 뜻한다. 더 자세한 내용은 다음을 참고 하자. [Spring] 의존관계 주입(Dependency Injection : DI)이란? 의존관계(Dependency)란? 의존관계 주입(Dep..