분류 전체보기
-
1. Question 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 1.1 Input 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 1.2 Output 첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다. 1.3 Example 입력 출력 10 15 5 1 3 5 10 7 4 9 2 8 2 2. Approach 투 포인터 문제다. 부분합..
[백준, BOJ] 1806 - 부분합1. Question 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 1.1 Input 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 1.2 Output 첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다. 1.3 Example 입력 출력 10 15 5 1 3 5 10 7 4 9 2 8 2 2. Approach 투 포인터 문제다. 부분합..
2020.08.27 -
1. Question 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(X) = 1이다. 두 양의 정수 X와 Y가 주어졌을 때, Rev(Rev(X) + Rev(Y))를 구하는 프로그램을 작성하시오 1.1 Input 첫째 줄에 수 X와 Y가 주어진다. X와 Y는 1,000보다 작거나 같은 자연수이다. 1.2 Output 첫째 줄에 문제의 정답을 출력한다. 1.3 Example 입력 출력 123 100 223 2. Approach 다른 언어는 귀찮지만, 파이썬에서는 매우 간단한 문제. 파이썬의 슬라이싱만 알면 매우 쉬워진..
[백준, BOJ] 1357 - 뒤집힌 덧셈1. Question 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(X) = 1이다. 두 양의 정수 X와 Y가 주어졌을 때, Rev(Rev(X) + Rev(Y))를 구하는 프로그램을 작성하시오 1.1 Input 첫째 줄에 수 X와 Y가 주어진다. X와 Y는 1,000보다 작거나 같은 자연수이다. 1.2 Output 첫째 줄에 문제의 정답을 출력한다. 1.3 Example 입력 출력 123 100 223 2. Approach 다른 언어는 귀찮지만, 파이썬에서는 매우 간단한 문제. 파이썬의 슬라이싱만 알면 매우 쉬워진..
2020.08.26 -
1. Question 케빈 베이컨의 6단계 법칙에 의하면 지구에 있는 모든 사람들은 최대 6단계 이내에서 서로 아는 사람으로 연결될 수 있다. 케빈 베이컨 게임은 임의의 두 사람이 최소 몇 단계 만에 이어질 수 있는지 계산하는 게임이다. 예를 들면, 전혀 상관없을 것 같은 인하대학교의 이강호와 서강대학교의 민세희는 몇 단계만에 이어질 수 있을까? 천민호는 이강호와 같은 학교에 다니는 사이이다. 천민호와 최백준은 Baekjoon Online Judge를 통해 알게 되었다. 최백준과 김선영은 같이 Startlink를 창업했다. 김선영과 김도현은 같은 학교 동아리 소속이다. 김도현과 민세희는 같은 학교에 다니는 사이로 서로 알고 있다. 즉, 이강호-천민호-최백준-김선영-김도현-민세희 와 같이 5단계만 거치면 ..
[백준, BOJ] 1389 - 케빈 베이컨의 6단계 법칙1. Question 케빈 베이컨의 6단계 법칙에 의하면 지구에 있는 모든 사람들은 최대 6단계 이내에서 서로 아는 사람으로 연결될 수 있다. 케빈 베이컨 게임은 임의의 두 사람이 최소 몇 단계 만에 이어질 수 있는지 계산하는 게임이다. 예를 들면, 전혀 상관없을 것 같은 인하대학교의 이강호와 서강대학교의 민세희는 몇 단계만에 이어질 수 있을까? 천민호는 이강호와 같은 학교에 다니는 사이이다. 천민호와 최백준은 Baekjoon Online Judge를 통해 알게 되었다. 최백준과 김선영은 같이 Startlink를 창업했다. 김선영과 김도현은 같은 학교 동아리 소속이다. 김도현과 민세희는 같은 학교에 다니는 사이로 서로 알고 있다. 즉, 이강호-천민호-최백준-김선영-김도현-민세희 와 같이 5단계만 거치면 ..
2020.08.25 -
1. Question 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 1.1 Input 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 1.2 Output 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V..
[백준, BOJ] 1260 - DFS와 BFS1. Question 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 1.1 Input 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 1.2 Output 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V..
2020.08.24 -
1. Question 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 ..
[백준, BOJ] 2606 - 바이러스1. Question 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 ..
2020.08.24 -
1. Question 수직선 위에 N개의 좌표 $X_1, X_2, ..., X_N$이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. $X_i$를 좌표 압축한 결과 $X'_i$의 값은 $X_i > X_j$를 만족하는 서로 다른 좌표의 개수와 같아야 한다. $X_1, X_2, ..., X_N$에 좌표 압축을 적용한 결과 $X'_1, X'_2, ..., X'_N$를 출력해보자. 1.1 Input 첫째 줄에 $N$이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 $X_1, X_2, ..., X_N$이 주어진다. $1 ≤ N ≤ 1,000,000$ $-10^9 ≤ X_i ≤ 10^9$ 1.2 Output 첫째 줄에 $X'_1, X'_2, ..., X'_N$을 공백 한 칸으로 구분해서 출력한다. 1.3 Examp..
[백준, BOJ] 18870 - 좌표 압축1. Question 수직선 위에 N개의 좌표 $X_1, X_2, ..., X_N$이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. $X_i$를 좌표 압축한 결과 $X'_i$의 값은 $X_i > X_j$를 만족하는 서로 다른 좌표의 개수와 같아야 한다. $X_1, X_2, ..., X_N$에 좌표 압축을 적용한 결과 $X'_1, X'_2, ..., X'_N$를 출력해보자. 1.1 Input 첫째 줄에 $N$이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 $X_1, X_2, ..., X_N$이 주어진다. $1 ≤ N ≤ 1,000,000$ $-10^9 ≤ X_i ≤ 10^9$ 1.2 Output 첫째 줄에 $X'_1, X'_2, ..., X'_N$을 공백 한 칸으로 구분해서 출력한다. 1.3 Examp..
2020.08.23 -
1. Question 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 1.1 Input 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 1.2 Output 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 1.3 Example 입력 출력 2 3 8 171 12 2731 2. Approach 이전 포스트와 같이 간단한 DP문제다. 2 by 2짜리 칸이 하나 더 생겼으므로, n-2번째항의 영향이 2배로 커진다. 3. Submission 4. Code import sys rl = sys.stdin.readline N = int(rl()) pre_val =..
[백준, BOJ] 11727 - 2*n 타일링 21. Question 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 1.1 Input 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 1.2 Output 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 1.3 Example 입력 출력 2 3 8 171 12 2731 2. Approach 이전 포스트와 같이 간단한 DP문제다. 2 by 2짜리 칸이 하나 더 생겼으므로, n-2번째항의 영향이 2배로 커진다. 3. Submission 4. Code import sys rl = sys.stdin.readline N = int(rl()) pre_val =..
2020.08.23 -
1. Question 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 1.1 Input 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 1.2 Output 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 1.3 Example 입력 출력 2 2 9 55 2. Approach 가장 기본적인 DP, 점화식은 피보나치와 같다. 3. Submission 4. Code import sys rl = sys.stdin.readline N = int(rl()) pre_val = 0 ans = 1 for _ in range(1, N+1): ans, pr..
[백준, BOJ] 11726 - 2*n 타일링1. Question 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 1.1 Input 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 1.2 Output 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 1.3 Example 입력 출력 2 2 9 55 2. Approach 가장 기본적인 DP, 점화식은 피보나치와 같다. 3. Submission 4. Code import sys rl = sys.stdin.readline N = int(rl()) pre_val = 0 ans = 1 for _ in range(1, N+1): ans, pr..
2020.08.23