intro To prepare for your dive into deep learning, you will need a few survival skills 딥러닝에 대한 다이빙을 준비하려면 다음과 같은 몇 가지 생존 기술이 필요합니다. (i) techniques for storing and manipulating data 데이터 저장 및 조작 기술 (ii) libraries for ingesting and preprocessing data from a variety of sources 다양한 소스의 데이터를 수집하고 전처리하기 위한 라이브러리 (iii) knowledge of the basic linear algebraic operations that we apply to high-dimensional ..
분류 비트마스킹, 다이나믹 프로그래밍, 비트필드를 이용한 다이나믹 프로그래밍 문제 설명 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N이면서 0부터 9까지 숫자가 모두 등장하는 계단 수가 총 몇 개 있는지 구하는 프로그램을 작성하시오. 0으로 시작하는 수는 계단수가 아니다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 예제 입력 10 예제 출력 1 코드 - 계단 수.java import java.util.Scanner; public class Main { static int mod = 1000000..
분류 수학 문제 설명 옛날에는 책을 만들 때, 한글자 한글자를 나눠서 활자를 만들어서 그걸 합쳐서 책을 만들었다고 한다. 예를 들면 가나다라는 글씨를 쓰기 위해서는 3개의 활자가 필요할 것이다. 그렇다고 할 때, N이하의 자연수를 활자로 표현하기 위해서는 몇 개의 활자가 필요한지 구하여라. 예를 들어 10이하의 자연수를 활자로 표현하려면 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0 이렇게 11개의 활자가 필요할 것이다. 입력 첫째 줄에 N(1 ≤ N ≤ 2,000,000,000)이 주어진다. 출력 첫째 줄에 필요한 활자의 수를 1234567로 나눈 나머지를 출력한다. 예제 입력 10 예제 출력 11 코드 - 활자.java import java.util.Scanner; public class ..
분류 이분 탐색, 가장 긴 증가하는 부분 수열: O(n log n) 문제 설명 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 둘째 줄에는 정답이 될 수 있는 가장 긴 증가하는 부분 수열을 출력한다. 예제 입..
분류 분할 정복을 이용한 거듭제곱, 그래프 이론, 수학 문제 설명 세준이는 정문이를 데리러 공항으로 가기로 했다. 하지만, 방금 세준이는 정문이의 비행기가 연착된다는 전화를 받았다. 세준이는 정문이가 정확하게 몇 분 늦는지 알고 있고, 그 시간 동안 밖에서 드라이브를 하려고 한다. 정문이가 늦는 시간을 T라고 하자. 세준이는 자기가 지금 있는 위치에서부터, 공항까지 정확하게 T분만에 도착하는 경로의 개수를 구하고 싶다. 길의 정보는 인접행렬로 주어진다. A[i][j]가 0이라면 i에서 j로 가는 길이 없는 것이고, A[i][j] ≤ 5라면, 정확히 그 만큼의 시간이 걸리는 i에서 j로 가는 길이 있는 것이다. 입력 첫째 줄에 교차점의 개수 N이 주어진다. N은 10보다 작거나 같고, 시작점의 위치 S와 ..
분류 너비 우선 탐색, 깊이 우선 탐색, 그래프 이론, 그래프 탐색 문제 설명 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은 색상이라 한다) 예를 들어, 그림이 아래와 같은 경우에 RRRBB GGBBB BBBRR BBRRR RRRRR 적록색약이 아닌 사람이 봤을 때 구역의 수는 총 4개이다. (빨강 2, ..
분류 다이나믹 프로그래밍 문제 설명 문자열 O에서 문자열 N까지 문자열 거리는 O를 N과 같게 만들기 위해 필요한 문자열 삽입의 최솟값이다. 문자열 삽입은 O의 어느 위치에서건 가능하다. 예를 들어, O가 “gosrl"일 때, ”sip gi"을 r이전에 삽입한다면 "gossip girl“이 된다. 문자열 O와 문자열 N이 주어질 때, 두 문자열의 거리를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열 O, 둘째 줄에 문자열 N이 주어진다. 문자열의 길이는 최대 1,000이다. 문자열은 아스키 코드의 값이 32보다 크거나 같고, 126보다 작거나 같은 문자로만 이루어져 있다. 출력 첫째 줄에 문자열 O와 문자열 N의 문자열 거리를 출력한다. 만약 O를 N으로 만들 수 없다면 -1을 출력한다. 예제 ..
분류 비트마스킹, 다이나믹 프로그래밍, 비트필드를 이용한 다이나믹 프로그래밍 문제 설명 넓은 초원이 있다. 민식이는 초원에 심은 풀이 이상한 사람들이 밟을 까봐 걱정한다. 따라서, 민식이는 초원에 삼각형 모양의 울타리를 치려고 한다. 민식이는 지하실에 N개의 울타리가 있다. 민식이는 3개의 울타리를 이용해서 삼각형 모양을 만든다. 삼각형의 각 변은 울타리 하나이다. 울타리는 붙이거나 쪼갤 수 없다. 민식이는 삼각형 넓이의 합을 최대로 하려고 한다. 입력 첫째 줄에 울타리의 개수 N이 주어진다. N은 16보다 작거나 같은 자연수이다. 둘째 줄에 각 울타리의 길이가 주어진다. 이 값은 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 줄을 문제의 정답을 출력한다. 절대/상대 오차는 10-9까지 허용한다. ..
분류 분할 정복, 재귀, 트리 문제 설명 n개의 정점을 갖는 이진 트리의 정점에 1부터 n까지의 번호가 중복 없이 매겨져 있다. 이와 같은 이진 트리의 인오더와 포스트오더가 주어졌을 때, 프리오더를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. 출력 첫째 줄에 프리오더를 출력한다. 예제 입력 3 1 2 3 1 3 2 예제 출력 2 1 3 코드 - 트리의 순회.java import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java..