분류 전체보기 291

[프로그래머스 | Java Lv.2] 연속된 부분 수열의 합

문제https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 첫번째 코드 - 시간 초과(테스트 케이스 10~16, 20~24)class Solution { public static int[] solution(int[] sequence, int k) { int[] answer = {-1, -1}; // 초기화 시 비정상 값을 사용 for (int i = 0; i 0)) { answer[0] ..

[프로그래머스 | Java | 2017 팁스타운] 짝지어 제거하기

문제https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr접근처음에는 가장 직관적인 방법으로 일반 반복문을 통해서 문자열 조작을 해주려고 했는데, 몇 가지 테스트 케이스에서 실패와 시간초과가 떴다.  "짝" 지어 제거하기인 문제인 만큼, 괄호 문제에서 짝지어서 제거해줬던 것처럼 자료구조 스택을 이용해야 했던 문제이다.  첫번째 코드 - 일반 반복문 사용 (시간 초과)package week15.baek.august20.baek;public class P_P..

[Database] 트리거(Trigger)

트리거(Trigger)트리거(Trigger)는 총의 방아쇠를 뜻한다. 총의 방아쇠를 당기면 총알이 발사되는 일련의 과정이 있는 것처럼 Database에서의 트리거도 어느 특정 동작에 반응해서 자동적으로 필요한 동작이 실행되는 것을 의미한다.  즉, 데이터베이스에서의 트리거의 의미는 아래와 같다.  트리거(Trigger): 어떤 트랜잭션이 일어나면 거기에 반응해서 다른 명령을 실행하게 하는 기능   트리거가 실행되는 경우더 자세히 얘기하자면, 트리거는 데이터의 변경(INSERT, DELETE, UPDATE) 문이 실행 될 때 자동으로 실행되는 프로시저를 말한다.  데이터가 변경문INSERTDELETEUPDATE 트리거가 실행되는 시점보통 트리거는 데이터의 변경문이 처리되는 세 가지 시점(실행 전, 대신하여..

[Database] 스키마(Schema)

스키마란?데이터베이스 스키마(database schema)는 데이터베이스(Database) 전체 또는 일부의 논리적인 구조를 표현하는 것으로 데이터베이스 내에서 데이터가 어떤 구조로 저장되는지를 나타낸다.   💡스키마 vs ERD간략하게 말하자면, ERD는 데이터베이스 설계도이고, 스키마는 구현체이다. 데이터베이스를 생성하기 전에는 어떻게 구현할지 ERD라는 설계도를 사용해서 설계를 해야한다. 이러한 ERD를 통해서 데이터베이스를 생성하면 DBMS에서 생성해주는 것이 스키마이다.   스키마 3계층스키마는 사용자의 관점에 따라 외부 스키마, 개념스키마, 내부 스키마로 나눠진다.  외부 스키마 (External Schema) = 사용자 뷰 = 서브 스키마사용자나 응용 프로그래머가 개인의 입장에서 필요한 데..

[자료구조] B-Tree

B-Tree가 사용되는 이유   효율적 자료 탐색의 도구로 활용되는 이진트리는 검색과 삽입에 효율적이지만, 대용량 데이터에서 불편한 면이 있다. 이진탐색트리의 삽입,삭제 연산 시간복잡도이진탐색트리의 삽입과 삭제 연산은 탐색이후 이루어지기 때문에 탐색에 필요한 O(h)이 소요되며 연결리스트를 사용하므로 입력과 삭제에는 O(1)이 사용된다.따라서 총 소요되는 시간 복잡도는 O(h)이며 최악의 경우 탐색과 동일하게 O(N)이 소요된다. 따라서, 이진 탐색 트리는 한쪽 방향으로 노드가 집중된 편향트리에서는 효율적이지 않다. 이러한 이진트리의 특징에 대응하여 B트리는 각 노드에 여러 키를 저장할 수 있고, 여러 하위 노드를 가질 수 있다는 특징을 활용하여 트리의 높이가 상대적으로 낮아질 수 있으며, 한 번의 디스..

[백준 | Java Silver II] (#14246) K보다 큰 구간

문제https://www.acmicpc.net/problem/14246Issuecount와 sum을 int로 하면 틀렸다고 뜨고, long으로 바꿔주니까 맞았던 문제이다.  첫번째 코드 - 실패, int 사용package week14.baek.august13.baek;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class S14246 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedR..

[백준 | Java Silver IV] (#1940) 주몽

문제 https://www.acmicpc.net/problem/1940 접근투포인터를 사용해서 풀 수 있었던 문제이다.  두 재료의 합이 m이 되는 개수를 찾아야 한다.  따라서 주어진 배열을 먼저 정렬하고, start과 end로 가장 앞과 뒤에 포인터를 두고, 두개의 합이 m보다 작다면 end를 증가시켜주고, m보다 크다면 start를 감소시켜서 m 값을 찾아가도록 한다.  그렇게 start과 end의 위치가 교차되어 순서가 바뀌는 순간 while문을 종료되고, count를 출력한다. 최종 코드package week14.baek.august13.baek;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamR..

[Database] 조인(Join)이란?

조인(Join)이란?데이터를 다루다 보면 하나 이상의 테이블을 연결해서 데이터를 추출해야 하는 경우가 있다. 이럴 때 특정 키를 중심으로 테이블을 연결시키는 것을 조인(Join)이라고 한다.  조인 수행시 양쪽 테이블 간의 연결 조건을 정확히 하지 않으면 M*N 연산이 발생하여 매우 많은 양의 데이터를 출력해야 하기 때문에 시스템 성능이 저하된다.  조인의 종류  동등 조인 (내부 조인)양쪽 테이블의 공동 컬럼을 기준으로 같은 행들을 연결 자연조인 (내부 조인)양쪽 테이블에서 데이터 타입 및 컬럼명에 같은 값이 존재할 때 자동으로 동등 조인을 수행 비동등 조인양쪽 테이블의 공통 칼럼을 기준으로 동등이 아닌 조건으로 연결 셀프 조인 하나의 테이블에 공통된 칼럼이 두 개 이상 있는 경우의 동등 조인 외부 조..

[Database] 인덱스(Index)란?

DBMS는 Database에서 필요에 따라 데이터를 검색한 결과를 사용자에게 반환해준다. 그렇다면 Database에는 실제로 데이터가 어떻게 저장되는 걸까? Database의 물리적 저장워드에서 작성한 문서는 파일의 형태로 저장되듯이, DBMS도 마찬가지로 DBMS만의 고유한 방식으로 데이터를 저장하고 관리한다.  MySQL의 경우, 사용자가 MySQL Workbench와 같은 SQL 작업 도구 Tool을 통해 SQL문을 작성해서 실행하면, DBMS로 요청이 간다. DBMS도 운영체제에서 실행되는 응용 프로그램이기 때문에, 저장 작업도 마찬가지로 운영체제를 통해 각 장치에 명령이 내려져서 데이터를 운영체제의 파일 시스템에 종속적인 데이터베이스 파일로 저장이 된다.  이때, 실제로 데이터가 저장되는 곳은 ..

[Database] 트랜잭션과 ACID

트랜잭션트랜잭션이란 DBMS가 데이터베이스를 다룰 때 사용하는 작업(프로그램)의 단위이다. 데이터베이스에서 데이터를 다룰 때 장애가 일어나는 경우가 있는데, 이때 데이터를 복구하는 작업의 단위가 된다. 또, 여러 작업이 한번에 같은 데이터를 조작해서 문제가 생길 때가 있는데, 이 작업들을 서로 분리해주는 단위가 된다.  트랜잭션은 전체가 수행되거나 또는 전혀 수행되지 않아야 한다. 예를 들어, A가 B에게 10000원을 이체하는 경우는 다음과 같이 동작한다.START TRANSACTION 1. A에서 10000원을 인출하는 SQL UPDATE문 2. B에서 10000원을 입금하는 SQL UPDATE문COMMIT 이때, COMMIT은 트랜잭션의 종료를 알리는 SQL문이다. 위 상황을 더 자세히 ..