전체 글
-
BFS/DFS_타겟 넘버_python프로그래머스 문제풀이 2021. 5. 17. 22:13
문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다. ..
-
그래프_최단경로(BFS, Dijkstra)Algorithm & Data Structure 2021. 5. 7. 15:40
최단 경로 (Shortest Path) 두 노드 사이에 존재할 수 있는 모든 경로 중 거리가 가장 짧은 경로를 말한다. 비가중치 그래프에서는 경로 중 엣지의 수가 가장 적은 것이 최단 경로이며 가중치 그래프에서는 보통 엣지의 가중치의 합이 가장 적은 경로가 최단 경로가 된다. 최단 경로 알고리즘 주어진 그래프에서 두 노드 사이에 가장 짧은 경로를 구하는 방법을 최단 경로 알고리즘이라 부른다. 이 최단 경로 알고리즘은 단 하나의 방법으로 구성되어 있지 않고 여러 방법이 존재한다. 엣지의 방향이 있는지, 가중치가 있는지, 음수 엣지가 존재하는지, 싸이클이 존재하는 지 등등 다양한 그래프 특징에 ㅏ따라 많은 방법이 존재한다. 대표적으로 두 개의 최단 경로 알고리즘인 BFS와 Dijksatr 알고리즘을 알아보자..
-
SQL 제약Database 2021. 5. 4. 14:05
제약 "테이블"에 제약을 설정함으로써 저장될 데이터를 제한할 수 있다. NOT NULL 제약으로 NULL 값이 저장되지 않도록 제한할 수 있으며, 기본키(Primary Key), UNIQUE제약 등 데이터베이스 설계에 영향을 주는 중요한 개념이다. 여기서 키 제약(PK, FK)등은 RDBMS에서 반드시 언급되는 사항으로 추가, 삭제에 대해 확실히 알아두어야 한다. 제약은 테이블에 설정하는 것이다. CREATE TABLE로 테이블을 생성할때 제약을 정의할 수 있고 ALTER TABLE로 제약을 새로 정의하거나 변경할 수 있다. 이때, 하나의 열에 대해 설정하는 제약을 "열 제약"이라 부르며, 복수의 열에 대해 설정하는 제약을 "테이블 제약"이라 부른다. 제약은 대표적으로 아래 6가지 제약이 있다. 1. N..
-
그래프 탐색_BFS, DFSAlgorithm & Data Structure 2021. 5. 4. 14:04
그래프 탐색 보통 탐색은 주어진 조건에 맞는 데이터를 찾는 것을 의미 하지만 그래프에서의 탐색은 하나의 노드를 시작점으로 연결된 노드들을 모두 찾는 것을 탐색이라고 말한다. 자료구조 안에 저장된 모든 데이터를 도는 것을 순회라고 하는데 따라서, 그래프에서의 탐색도 하나의 노드에서 연결된 모든 노드를 돌기 때문에 그래프 순회라고도 부르기도 한다. (그래프 탐색과 그래프 순회는 같은 말이다.) 그래프를 탐색하며 알 수 있는 정보 그래프를 탐색하면 그래프의 구조에 대해 의미 있는 정보들을 알아낼 수 있다. 1. 주어진 두 노드가 경로를 통해 연결되어있는지 여부 2. 주어진 두 노드 사이의 최단 경로를 알아낼 수 있다. 대표적으로 두가지 정도가 있으나 정렬 등 많은 문제에서 그래프 탐색을 사용하여 문제를 해결할..
-
정렬_가장 큰 수_python프로그래머스 문제풀이 2021. 5. 2. 22:07
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 접근 방법 문제를 보면 numbers 원소는 1000..
-
정렬_K번째수_python_Js프로그래머스 문제풀이 2021. 5. 2. 21:26
문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..
-
그래프_구현하기카테고리 없음 2021. 4. 29. 15:43
그래프 구현하기 그래프를 구현하는 방법은 크게 2가지로 나누어 알아보자. 1. 그래프의 노드를 구현하는 방법 - 배열 또는 동적 배열 => 파이썬의 리스트로 구현이 가능하다. - 해시 테이블 => 파이썬의 딕셔너리로 구현이 가능하다. 2. 그래프의 에지를 구현하는 방법 - 인접 행렬 - 인접 리스트 먼저, 그래프의 노드를 구현하는 방법이다. 1. 동적 배열 / 파이썬 리스트 구현 방법 그래프는 노드라는 기본 데이터 단위를 가지며 리스트의 요소로 단순 값이 아닌 노드 자체를 요소로 하는 리스트를 만드는 방법이다. 이때 노드는 특정 인덱스 값을 부여받는데, 인덱스를 이용해 리스트의 O(1)으로 효율적인 접근이 가능하며, 노드 안의 인스턴스에 대한 접근도 그만큼 효율적으로 할 수 있게 되는 것이다. class..
-
스택/큐_주식가격_python프로그래머스 문제풀이 2021. 4. 27. 16:43
문제 설명 초 단위로 기록된 주식 가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다. ※ 공지 - 2019년 2월 28일 지문이 리뉴얼되었습..