전체 글 241

[Python] 1436번 영화감독 숌

문제 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 입력 첫째 줄에 N이 주어진다. N은 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 N번째 영화의 제목에 들어간 수를 출력한다. 입력 예제 2 출력 예제 1666 문제 풀이 단순하게 666부터 1씩 증가시켜가면서, 666이 들어있는 n번째 작은 숫자의 값을 구하여 출력한다. 코드 n = int(input()) six = 666 cnt = 0 while True: if '666' in str(six): cnt += 1 if cnt == n: pr..

[Python] 백준 7568번 덩치

문제 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 입력 첫 줄에는 전체 사람의 수 N이 주어진다. 그리고 이어지는 N개의 줄에는 각 사람의 몸무게와 키를 나타내는 양의 정수 x와 y가 하나의 공백을 두고 각각 나타난다. 출력 여러분은 입력에 나열된 사람의 덩치 등수를 구해서 그 순서대로 첫 줄에 출력해야 한다. 단, 각 덩치 등수는 공백문자로 분리되어야 한다. 입력 예제 5 55 185 58 183 88 186 60 175 46 155 출력 예제 2 2 1 2 5 문제 풀이 입력받은 덩치가 들..

[Python] 백준 2231번 분해합

문제 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 입력 예제 216 출력 예제 198 문제 풀이 1부터 n까지 모든 숫자를 탐색하며 분해합을 구한다. 숫자를 1씩 늘려가며 분해하여 더한 값과 i값을 더한 후, 그 값이 n과 같다면 n의 생성자이다. 코드 n = int(input()) for i in range(1, n + 1): num..

[Python] 백준 2798번 블랙잭

문제 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 입력 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 입력으로 주어진다. 출력 첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다. 입력 예제 5 21 5 6 7 8 9 10 500 93 181 2..

[Python] 백준 2579번 계단 오르기

문제 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 입력 입력의 첫째 줄에 계단의 개수가 주어진다. 둘째 줄부터 한 줄에 하나씩 제일 아래에 놓인 계단부터 순서대로 각 계단에 쓰여 있는 점수가 주어진다. 계단의 개수는 300이하의 자연수이고, 계단에 쓰여 있는 점수는 10,000이하의 자연수이다. 출력 첫째 줄에 계단 오르기 게임에서 얻을 수 있는 총 점수의 최댓값을 출력한다. 입력 예제 6 10 20 15 25 10 20 출력 예제 75 문제 풀이 각 경우에서의 최댓값을 구해야 하므로 dp[0]의 값은 array[0]..

[Python] 백준 1149번 RGB거리

문제 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 모든 집을 칠하는 비용의 최솟값을 출력한다. 입력 예제 3 26 40 83 49 60 57 13 89 99 3 1 100 100 100 1 100 100 100 1 출력 예제 96 3..

[Python] 백준 1912번 연속합

문제 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력 첫째 줄에 답을 출력한다. 입력 예제 10 10 -4 3 1 5 6 -35 12 21 -1 10 2 1 -4 3 4 -4 6 5 -5 1 출력 예제 33 14 문제 풀이 연속되는 수의 합 중 가장 큰 값을 구해줘야 하므로 항상 현재 인덱스의 값 + 이전 인덱스의 값과, 현..

[Python] 백준 11053번 가장 긴 증가하는 부분수열

문제 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 입력 예제 6 10 20 10 30 20 50 출력 예제 4 문제 풀이 간단하게 앞 뒤 숫자를 비교하여 뒤에 있는 숫자가 더 큰 경우 인덱스의 값을..

[Python] 백준 1463번 1로 만들기

문제 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 입력 예제 2 출력 예제 1 문제 풀이 i번째 인덱스의 값은 i를 1로 만드는 데 걸리는 횟수 이므로 맨 처음 1을 빼서 i값을 만드는 값을 i번째 인덱스에 넣는다. 그 후, 만약 i가 2나 3의 배수라면, 나누기 연산을 한 값이 최소 연산 횟수 일 것이므로, [i // 2], [i//3]번째 인덱스의 값에 1을 더해서 넣어준다. 따라서 점화식은 아래와 같다. if (i % 3 == 0 or i % 2 == 0) dp[i] = min(..

[Python] 백준 1904번 01타일

문제 [Python] 백준 1904번 01타일 성공 01타일 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 256 MB 14112 5932 4958 41.399% 문제 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리 chancoding.tistory.com 입력 첫 번째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 출력 첫 번째 줄에 지원이가 만들 수 있는 길이가 N인 모든 2진 수열의 개수를 15746으로 나눈 나머지를 출력한다. 입력 예제 4 출력 예제 5 문제 풀이 조건을 살펴보면 i번째 가능한 타일의 개수는 (i - 1)의 개수 + (i - 2)의 개수이다. 따라서 점화식은 아래와 같다. dp[i] = (dp[i -..